我有以下代码,我尝试使用ajax / json将值发布到php文件。 php文件抛出警告:未定义索引:companyid,未定义索引:companyname,未定义索引:calendar_eventStart,未定义索引:calendar_eventEnd。 我意识到使用ajax发布的变量在服务器端被接收时是空的,但我不知道我做错了什么。这是我的代码:
控制台日志:
数据:{" 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);
答案 0 :(得分:3)
下面
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进行字符串化的数据。