在Javascript中,我为用户端列表创建了一个数组
var dataArr = [];
$("#sortable li").each(function(idx, elem) {
dataArr[idx] = $(elem).html();
});
alert(dataArr[0]);
这是预期的工作,并将提醒列表中的第一个项目。"弗兰克"或者其他什么名字
$.ajax({
url: "fiddle.php",
type: "POST",
data: "dataArr="+dataArr,
success: function(response) {
alert(response);}
我将这个数组发送给PHP, ajax测试确认它是从另一端的var_dump中检索到的。
echo ($_POST['dataArr'][1]);
当试图输出一个特定的项目时,问题出现在这里,在本例中,第二个项目可能是"John",它将输出第一个项目"r"中的第二个字符。这将出现在Ajax测试窗口中。我要找整个世界。是语法错误还是数据传递方式有问题?
我认为这个问题与你如何在ajax调用中发送数据有关。
试试这个:
JS
var dataArr = [];
$("#sortable li").each(function(idx, elem) {
dataArr[idx] = $(elem).html();
});
$.ajax({
url: "fiddle.php",
type: "POST",
data: dataArr, //Send just the array
success: function(response) {
alert(response);
}
});
PHP var_dump($_POST['dataArr']);
这是因为你的数组被转换为字符串形式。
在客户端执行JSON.stringify()
,在服务器端执行json_decode
data: "dataArr="+JSON.stringify(dataArr),
和PHP代码中的
$dataArr = json_encode($_POST['dataArr']);
var_dump($dataArr);