我有以下代码,我尝试使用ajax/json将值发布到php文件中。php文件抛出警告:未定义的索引: companyid,未定义的索引: companyname,未定义的索引: calendar_eventStart,未定义的索引: calendar_eventEnd。我意识到使用ajax发布的变量在服务器端被提取时是空的,但我看不出我做错了什么。下面是我的代码:
控制台日志:
数据:{"companyid":1,“companyname”:“十五个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);
发布于 2018-06-08 06:40:14
这里
data:{data: formData},
您正在创建子对象,因此实际数据可以在
$_POST['data']['companyid'] // etc
如果你没有先JSON.stringify(formData)
的话。如果保留字符串,$_POST['data']
将只包含一个包含数据的字符串。要实现这一点,还需要php的另一个魔力。所以只需删除此处的字符串即可。
但是你不需要额外的'data‘对象。你可以这样做
$.ajax({
url: "create_calendar_event.php",
type: "post",
dataType: "json",
data: formData,
success: function(response) {
alert(response);
}
});
最后给JSON.stringify()
的说明:除了通过URI ( GET请求)发送数据之外,我想不出还有什么情况需要对jsObject进行字符串化。
https://stackoverflow.com/questions/50750973
复制相似问题