[英]Undefined Index error when sending array to PHP via AJAX
我已经尝试过解决类似问题的修复程序,但对我而言没有任何帮助。
当按下我的提交按钮时,尝试通过AJAX将数组发送到PHP。
在PHP文件中,我得到了错误-注意:未定义的索引:数据
的HTML
<form id="email-form" action="add-user.php" method="post">
...
</form>
Java脚本
var frm = $('#email-form');
frm.submit(function (ev) {
var cars = ["Saab", "Volvo", "BMW"]; //this is the array i want to send for purposes of this question
var jsonString = JSON.stringify(cars);
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: {'data': jsonString},
success: function () {
alert('ok');
}
});
});
PHP(add-user.php)
$data = json_decode(stripslashes($_POST['data']));
foreach($data as $d){
echo $d;
}
尝试获取数据时遇到相同的错误:{data:jsonString}
console.log(jsonString)向我显示了数组,因此我知道它存在。
关于什么导致未定义索引错误的任何想法? 提前致谢。
提交表单时,将触发Submit事件。 这将触发普通的Ajax请求。 然后,submit函数完成运行,并提交表单。
浏览器离开当前页面,并丢弃包含等待对Ajax请求的响应的事件处理程序的执行环境。
服务器端脚本接收正常的表单数据,但是表单没有数据字段,因此您将收到未定义的索引错误。
您需要阻止常规表单提交:
ev.preventDefault();
您还应确保当JS失败时,服务器端代码可以处理表单中实际存在的字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.