У меня проблема с JQuery Mobile (новичок для меня) и AJAX-вызов. Я использую следующий код:
$.ajax({ type: "POST", url: "http://**correct url**/post/todoitem", beforeSend: addHeaders, dataType: "json", contentType: "application/json", data: { "todoitem":"test" }, // this is just as a test success: function(result) { alert("Success: " + JSON.stringify(result)); }, error: function() { alert("Error: " + JSON.stringify(arguments)); } });
Выполняя это, он вызывает скрипт PHP, где мне нужны данные из todoitem, поэтому в этом случае строка «текст» (в конце концов, нужно отправить несколько переменных, но на данный момент я просто использую один параметр для простота).
Мой PHP-код выглядит так (также для тестирования):
echo json_encode($_POST));
Результат: ничего, null. $ _POST кажется пустым. Я искал и пробовал много вещей, но большинство ответов (даже здесь, в stackoverflow) касаются форм, и люди говорят, что мне нужно сериализовать содержимое формы. Однако я вообще не использую форму.
Я также пробовал
data: JSON.stringify({ "todoitem" : "test" })
как предполагали некоторые, но это тоже не сработало. Я знаю, что данные передаются из-за этого небольшого PHP-взлома, который я пробовал:
echo file_get_contents('php://input');
Это точно показывает данные: todoitem = test. Так где же все это идет не так? Я работаю над этим уже несколько дней! Thnx заранее
Проблема с этой частью вашего кода:
contentType: "application/json",`
Удаление этой строки должно сделать отправленный заголовок Content-Type
умолчанию для application/x-www-form-urlencoded
а PHP будет декодировать запрос в $_POST
.