我有以下代码,我尝试使用 ajax/json 将值发布到 php 文件。 php 文件抛出警告:未定义索引:companyid、未定义索引:companyname、未定义索引:calendar_eventStart、未定义索引:calendar_eventEnd。 我意识到使用 ajax 发布的变量在服务器端获取时是空的,但我不知道我做错了什么。这是我的代码:
控制台日志:
Data: {"companyid":1,"companyname":"Fifteen AS","calendar_eventStart":"2018-06-06T22:00:00.000Z","calendar_eventEnd":"2018-06-06T22:00:00.000Z"}
jQuery:
var formData = {
companyid,
companyname,
calendar_eventStart,
calendar_eventEnd
};
formData = (JSON.stringify(formData));
console.log('Data: ' + formData);
$.ajax({
url: "create_calendar_event.php",
type: "post",
dataType: "json",
data:{data: formData},
success: function(response) {
alert(response);
}
});
PHP:
var_dump($_POST['companyid']);
var_dump($_POST['companyname']);
var_dump($_POST['calendar_eventStart']);
var_dump($_POST['calendar_eventEnd']);
$event_status = 'Success';
echo json_encode($event_status,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
最佳答案
这里
data:{data: formData},
您正在创建一个子对象,因此实际数据可以在
中找到$_POST['data']['companyid'] // etc
如果您没有首先JSON.stringify(formData)
。如果保留 stringify $_POST['data']
将仅包含包含数据的字符串。解决这个问题需要 php 中的另一个魔法。所以只需删除这里的 stringify 即可。
但是您不需要额外的“数据”对象。你可以这样做
$.ajax({
url: "create_calendar_event.php",
type: "post",
dataType: "json",
data: formData,
success: function(response) {
alert(response);
}
});
对 JSON.stringify()
的最后说明:除了通过 URI(GET 请求)发送需要字符串化 jsObject 的数据之外,我想不出其他情况。
关于php - 为什么ajax @post到达php页面时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750973/