我正在尝试在 ajax 请求中传递数组,但显然它不起作用......
$.post("process.php", array,
function(data) {
document.getElementById("output").innerHTML = JSON.parse(data);
});
我的问题是,如何使用进程文件中发送的数据?
数组是这样构建的:[key (0/1/2...)] => ["prod_id"]
.ID 各不相同。
我在某处阅读使用$_POST["key"];
会起作用,但它没有。
如果我能按进程文件中的原样获取数组,那就更好了。
process.php
(非常基本 - 只是为了检查它是否有效。
<?php
print($_POST["test"]);
?>
尝试传递{data: array}
而不是array
。AJAX 调用需要一个对象。
您需要构建数组元素的对象。 例如:
您也可以尝试:
{ 'key[]': [1, 2, 3] }
或
{ key: [1,2,3] }
阅读更多关于 $.post() 的信息
为了在 php 中接收数据,您需要发送键/值对,但您只发送一个值。
你在 php 中收到带有 $_POST[key]
这将返回该键的值。
.JS:
$.post("process.php", {myAray: array}, function(data) {
$("#output").html(data);
});
.php
$array= $_POST['myArray'];
要从 php 返回此数组作为文本只是为了测试您的 ajax 可以使用 var_dump( $_POST)
或var_dump($array);
如果你打算从服务器接收JSON作为响应,你不需要使用JSON.parse,jQuery会在内部解析json。但是,您需要将"json"作为数据类型参数添加到$.post中
$.post("process.php", {myAray: array}, function(data) {
/* loop over json here*/
},'json');
如果你想传递一个数组,你必须"准备"密钥,如下所示:
{'key[]' : ['value1', 'value2', 'value3']}
就像你想在表单中传递数组并将 name-attribute 设置为 "key[]" 时,你会这样做。