从javascript中检索后,在PHP数组中只返回1个字符而不是整个单词


Only 1 character instead of the whole word being returned in a PHP array after retrieving from javascript

在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

ajax调用 中的

data: "dataArr="+JSON.stringify(dataArr),

和PHP代码中的

$dataArr = json_encode($_POST['dataArr']);
var_dump($dataArr);