【发布时间】:2019-08-29 12:41:37
【问题描述】:
我正在尝试将键值对的关联数组从客户端(javascript)发送到服务器(php)。数组的大小或值不固定。需要将用户选择的选项从一个页面转发到另一个页面。不使用表格
尝试使用 ajax,但 php 没有正确接收数组。使用php7、jquery 2.4.1、sql server、javascript
javascript/jquery
var contributeArr = {};
$(document).on("change", ".contribute_txt", function() {
// some other code
contributeArr[this.id] = this.value;
});
$('#contri_submit').click(function(e) {
e.preventDefault();
var error = false;
var contributeArray = JSON.stringify(contributeArr);
var url = 'chapter.php';
var formData = new FormData();
if (error == false) {
formData.append("contributeArray", contributeArray);
}
else {
console.log("Something went wrong. Check your code.");
}
for (var pair of formData.entries()) {
console.log(pair[0]+ ', ' + pair[1]);
}
$.ajax({
type: "POST",
url: url,
data: formData,
cache: false,
processData: false,
contentType: false,
success: function(result) {
window.setTimeout(function() {
window.location.href = url;
}, 2000);
},error: function(xhr,request,error) {
alert(error);
}
});
return false;
});
php
foreach ($_POST['contributeArray'] as $key => $value) {
$_SESSION['contribution'][$key] = $value;
}
print_r($_SESSION['contribution']);
print_r($_POST);
来自控制台日志的样本数据:
contributeArray, {"LECH":"10","MASC":"20","PMEM":"30","LVME":"50"}
【问题讨论】:
-
"php 没有正确接收数组" 你是如何检查的?请提供样本数据、当前结果和预期结果。
-
和往常一样...一旦您接受用户输入的信息并将其传递给服务器...您是否正在验证您的数据以确保安全?
-
你有没有使用浏览器的开发者工具查看AJAX的请求/响应?
-
在尝试
foreach之前,您是否确定$_POST['contributeArray']已被解码为一个数组? -
你为什么要先做
JSON.stringify和formData的东西?只需将contributeArr直接传递给带有data: contributeArr的帖子即可
标签: javascript php jquery sql-server ajax