繁体   English   中英

通过AJAX将数组发送到PHP时出现未定义的索引错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM