Не удается набрать PHP код из JQuery POST Call (Ошибка неопределенного индекса) - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь передать данные из сценария JS в файл PHP. Я использую JQuery сообщение следующим образом:

   const Url2 = 'MainPage2.php?action=updatePurchaseToDB';
   const data = {
       action: "updatePurchaseToDB",
       name: "test name"
   }


   //takes 3 arg, url, data to send, call back function, data in callback holds the page reqeusted in data

   $.post(Url2,data, function(data, status){
       console.log(`status is ${status} data : ${data}`);
       alert("PHP Retrned form server:  Status " + status + " Data: " + data);
   });

    }

Это, кажется, выполняется правильно, поскольку статус возвращается как успешный. Код PHP, к которому я стремлюсь:

if ($_POST['action'] == 'updatePurchaseToDB'){


      echo "<script>$(`#purchaseButton`).html('Test- received data');</script>";
    }

Выдается следующая ошибка: Неопределенный индекс: действие

Не уверен, почему как действие объявлено в параметрах URL и данных.

Если я попробую то же самое с Ajax вызовом:

$.ajax({
        url: 'MainPage2.php?action=updatePurchaseToDB',
        type: 'POST',
        success: function(data)
        {
          console.log(data);
        }

      });

Снова я получаю успешный ответ от сервера и ту же ошибку. Я прочитал этот пост , но, должно быть, я читаю его неправильно.

Я понимаю, что есть много ответов на аналогичный вопрос, но мне было трудно найти его для моей ситуации.

Вклад приветствуется.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Содержимое $_POST - это строки данных после заголовков HTTP.

Но ваш action=updatePurchaseToDB является частью URL-адреса запроса. Вы должны получить к нему доступ через $_GET["updatePurchaseToDB"].

И один вопрос о

echo "<script>$(`#purchaseButton`).html('Test- received data');</script>";

Разве это не должно быть

echo "<script>$('#purchaseButton').html('Test- received data');</script>";
0 голосов
/ 29 апреля 2020

В первом случае, даже если параметр находится в URL или в качестве параметра данных, вы вызываете как GET, поэтому сообщение с индексом недоступно.

Во втором случае вы выполняете post, но параметр updatePurchaseToDB является параметром GET, данные не отправляются в файл PHP. опять же, индекс будет недоступен.

Попробуйте:

const data = {
action: "updatePurchaseToDB",
    name: "test name"
}
$.ajax({
    url: 'MainPage2.php?action=updatePurchaseToDB',
    type: 'POST',
    data: data,
    success: function(data){
        console.log(data);
    }
});

enter image description here enter image description here

...