我在这么简单的问题上撕掉了我的头发。我有以下JS数组:
var orderDetailsArray = new Array();
orderDetailsArray[0] = 'test 1';
orderDetailsArray[1] = 'test 2';
orderDetailsArray[2] = 'test 3';
orderDetailsArray[3] = 'test 4';
然后我有以下Ajax代码将此数组发送到PHP文件
$.ajax({
type: "POST",
url: 'http://testdomain.com/file.php',
data: JSON.stringify(orderDetailsArray),
contentType: "application/json",
success: function(data) {
alert(data);
}
});
在我的PHP文件中,我有以下
$orderDetailsArray = json_decode($_POST['orderDetailsArray']);
echo $orderDetailsArray[0];
但由于某种原因alert(data)
总是只返回空白。我不知道为什么这不会返回正确的值。
任何帮助都会非常棒。
由于
答案 0 :(得分:4)
在发送数组之前,您没有在客户端命名数组,因此$_POST
的整个就是这个数组,$_POST['orderDetailsArray']
未定义。
您必须将其命名为客户端:
$.ajax({
type: "POST",
url: 'http://testdomain.com/file.php',
data: {
orderDetailsArray: JSON.stringify(orderDetailsArray)
},
contentType: "application/json",
success: function(data) {
alert(data);
}
});
答案 1 :(得分:1)
data: { orderDetailsArray: JSON.stringify(orderDetailsArray)}
答案 2 :(得分:1)
您的帖子数据不是一个键值对,因此您无法通过php中的via键访问。
使用php输入流:
$orderDetailsArray = json_decode(file_get_contents('php://input'));
或在你的ajax中设置一个键:
data: { orderDetailsArray: JSON.stringify(orderDetailsArray)}
答案 3 :(得分:1)
您应该像这样声明array
,然后可以直接传递ajax
。 (无需stringify
)
var orderDetailsArray = {};
orderDetailsArray[0] = 'test 1';
orderDetailsArray[1] = 'test 2';
orderDetailsArray[2] = 'test 3';
orderDetailsArray[3] = 'test 4';
$.ajax({
type: "POST",
url: 'http://testdomain.com/file.php',
data: {'order_details':orderDetailsArray},
contentType: 'application/x-www-form-urlencoded',
success: function(data) {
alert(data);
}
});
答案 4 :(得分:0)
没有dataType
data: {orderDetailsArray :orderDetailsArray},
with dataType
dataType: "json",
data: JSON.stringify({orderDetailsArray:orderDetailsArray}),
答案 5 :(得分:0)
你不能直接传递这个值,你需要将它分配给"键"像这样
data: {'arr':JSON.stringify(orderDetailsArray)},
并在php端访问相同的
$orderDetailsArray = json_decode($_POST['arr']);
<强>参考:强>
http://api.jquery.com/jQuery.ajax/
快乐编码:)
答案 6 :(得分:0)
问题在于提交的数据。在服务器端,没有指定数据
$_POST['orderDetailsArray']
将您的ajax更改为:
$.ajax({
type: "POST",
url: 'http://testdomain.com/file.php',
data: 'orderDetailsArray='+JSON.stringify(orderDetailsArray),
contentType: "application/json",
success: function(data) {
alert(data);
}
});
答案 7 :(得分:-1)
尝试更改数据: data:JSON.stringify(orderDetailsArray)
// by
data: {orderDetailsArrayData:orderDetailsArray}
或
data: JSON.stringify({orderDetailsArrayData:orderDetailsArray})
//在php中
$orderDetailsArray = $_POST['orderDetailsArrayData'];
echo $orderDetailsArrayData[0];
or
$orderDetailsArray = json_decode($_POST['orderDetailsArrayData']);
echo $orderDetailsArrayData[0];