[英]Data apparently is not being sent over AJAX POST - what am I doing wrong?
編輯:由於來自這里的反饋,我已經更新了我的代碼,它不再給我一個空數組,但現在它只是給我 null。
編輯 2:我組織中的某個人為我解決了這個問題。 原來我使用的是不需要的 POST 選項:我的工作代碼是:
前端:
$.ajax({
type: "POST",
url: "update_data_ajax.php",
data: {
events: JSON.stringify(currentEventsRows)
}
}).done(function(data) {
console.log("Done");
console.log(data);
});
后端:
echo json_encode($_POST);
原帖:
I'm trying to make an AJAX POST request to post some data to a SQL table, but it doesn't seem like my POST request is actually sending anything because the PHP backend is simply giving me a null.
為了縮小問題的范圍,我將頁面簡化為發布數據數組的 JavaScript 前端和僅返回數據的 PHP 后端。 這是我的前端網頁(update_data.php)的相關部分:
let currentEventsRows = [/* array of dicts of strings */];
$.ajax({
method: "POST",
url: "update_data_ajax.php",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
data: JSON.stringify{
events: currentEventsRows
},
processData: false
}).done(function(data) {
console.log("Done");
console.log(data);
});
這是我的 PHP 后端(update_data_ajax.php):
<?php
$_POST = json_decode(file_get_contents("php://input"), true);
echo $_POST;
?>
這是控制台 output:
Done
null
我究竟做錯了什么? 我覺得我錯過了一些完全簡單的東西。
您在這里有 2 個問題,1. 您沒有正確發送 JSON。 2. 您沒有正確閱讀 JSON。
您必須對 JSON 進行編碼才能發送 ajax 呼叫
let currentEventsRows = [/* array of dicts of strings */];
$.ajax({
method: "POST",
url: "update_data_ajax.php",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
data: JSON.stringify({
events: currentEventsRows
})
// processData: false -- not needed since the JSON is a string
}).done(function(data) {
console.log("Done");
console.log(data);
});
您的 JSON 數據未填充到 $_post 超全局中(這只發生在 multipart/form-data 和 application/x-www-form-urlencoded 中),因此您必須從php://input
中讀取它
<?php
echo file_get_contents('php://input');
?>
我組織中的某個人實際上為我解決了這個問題。 原來我正在使用我不需要的 POST 選項。
前端:
$.ajax({
type: "POST",
url: "update_data_ajax.php",
data: {
events: JSON.stringify(currentEventsRows)
}
}).done(function(data) {
console.log("Done");
console.log(data);
});
后端:
echo json_encode($_POST);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.