Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Невозможно опубликовать данные с помощью JQuery и Ajax

Автор вопроса: H.TiritОтветов: 2

Я новичок в php. Я пытаюсь опубликовать некоторые данные с помощью ajax, но это не работает.

Это мой HTML для ввода:

<div class="form-group">
  <h3>Answer:</h3>
  <div class="input-group">
    <textarea name="q1" id="q1" class="form-control" rows="4" ></textarea>
  </div>
</div>
<button type="button" id="button" class="btn btn-primary btn-lg">Submit</button>

И это моя функция jquery для публикации данных:

$(function(){
  $('button').click(function(){
  var q1= $('#q1').val();
  $.ajax({
    type: 'post',
    url: 'test.php',
    data: {
    q1: q1
   },

    success:  function (response) {
      console.log( response);
     }
    });
  });
});

Мой test.php - это простой код для отображения ввода:

<?php
	$q1= $_POST['q1'];
    echo $q1;
?>

Я не знаю, почему в моем test.php я получаю эту ошибку: Notice: Undefined index: q1 in C:\xampp\htdocs\series\file\test.php on line 2

Может ли кто-нибудь сказать мне, где проблема?

  • Вы получаете эту ошибку, когда переходите непосредственно к test.php в своем браузере? Leon Aves 20.03.2016
  • @LeonAves точно, H.Tirit 20.03.2016
  • Это ожидаемо. Когда вы посещаете его прямо в своем браузере, вы не публикуете q1 в test.php. Вам следует попробовать заменить функцию успеха на function (data) { console.log(data); } и проверить консоль. Leon Aves 20.03.2016
  • @LeonAves Я пробовал это, и я получаю ввод в консоли, однако я все еще получаю сообщение об ошибке H.Tirit 20.03.2016
  • Вы никогда не получите эту ошибку прямо в браузере. PHP ожидает опубликованные данные, которые вы не отправляете при непосредственном посещении страницы. PHP - для всех целей и задач в этом сценарии - не имеет состояния. Он не покажет ввод, который вы дали ему в запросе AJAX, потому что он даже не знает, что запрос был выполнен. Leon Aves 20.03.2016
  • Верно! не могли бы вы сказать мне, что я должен сделать, чтобы решить эту проблему? H.Tirit 20.03.2016

phphtmljqueryajaxpost

Ответы

Ответ 1 · Cihan Uygun

Прежде всего, вы пытаетесь отправить данные json в свой php-файл, поэтому jQuery может не создать правильную полезную нагрузку для вашего запроса, поскольку вы получаете undefined index:q1. Можете ли вы попробовать код ниже;

$(function () {
    $('button').click(function () {
        var q1 = $('#q1').val();
        $.ajax({
            type : 'post',
            url : 'test.php',
            data : "q1="+q1,
            success : function (response) {
                console.log(response);
            }
        });
    });
});

Ответ 2 · Rishi

Попробуй это:

$('document').ready(function(){

      $("form#data").submit(function(){
          var formData = new FormData($(this)[0]);
          $.ajax({
            url: 'url',
            type: 'POST',
            data: formData,
            async: false,
            success: function (data)
            {
              alert(data);
            },
            cache: false,
            contentType: false,
            processData: false
          });
         return false;
         });
      });
}
    <form id="data" method="post">
    <div class="form-group">
      <h3>Answer:</h3>
      <div class="input-group">
        <textarea name="q1" id="q1" class="form-control" rows="4" ></textarea>
      </div>
    </div>
    <input type="submit" id="button" class="btn btn-primary btn-lg">
    </form>

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы