将表单数据发送到 PHP 脚本进行处理的简单脚本。关联数组中的数据和控制台的输出表明它存在。使用 jquery AJAX 函数传递数据,但 PHP 脚本不接收数组。但是,如果我将数据硬编码到函数中,数据就会被传递。
如果尝试将 AJAX 功能“方法”设置为 POST 并删除该选项。我尝试了不同的数组格式。将数组作为硬编码数组的一部分传递。
Javascript端
function saveInformation(e) {
var d = []
var f = $(e)[0].id; //Form name
var formData = $('#'+f).serializeArray();
formData.forEach(function(item){
d[item.name] = item.value;
})
console.log('data',d)
$.ajax({
data: d,
url: "TableUpdate.php"
})
.done(function(e) { $('#agentGeneralInfoTitle').text('Agent General Information (Saved)'); console.log(e);})
.fail(function(e) {
alert("save failed\n" + e.responseText); console.log(e);
});
}
console.log 命令显示变量 d 中的数据。所有数据均已存在且格式正确。
PHP端
<?
require_once('/var/www/Debugging/ChromePhp.php');
chromePHP::log($_REQUEST,$_POST);
:
:
:
?>
这会打印出“[],[]”。它正确完成并确定数据不存在。
我希望传递数据并且 chromePHP::log 显示包含数据的数组。
最佳答案
var d
应该是一个对象而不是数组。
数组仅在 JavaScript 中具有数字索引
改变
var d = []
至
var d = {}
<小时/>
同时使用 serialize()
而不是 serializeArray()
会使其更简单,因为您不需要循环并创建 d
完全没有
function saveInformation(e) {
// assuming `e` is form element
var formData = $(e).serialize();
$.ajax({
data: formData ,
url: "TableUpdate.php"
})
.done(function(e) { $('#agentGeneralInfoTitle').text('Agent General Information (Saved)'); console.log(e);})
.fail(function(e) {
alert("save failed\n" + e.responseText); console.log(e);
});
}
关于javascript - 为什么这个数组没有被传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57383150/