2013-05-11 73 views
0

检索在Javascript中,我创建一个数组的用户侧列表只有1个字符,而不是整个字从JavaScript

var dataArr = []; 
$("#sortable li").each(function(idx, elem) { 
    dataArr[idx] = $(elem).html(); 
}); 
alert(dataArr[0]); 

这是按预期工作,并提醒后返回一个PHP数组列表中的第一项。 “弗兰克”或任何可能。

$.ajax({ 
url: "fiddle.php", 
type: "POST", 
data: "dataArr="+dataArr, 
success: function(response) { 
alert(response);} 

我把这个数组发送到PHP,并且ajax测试确认从另一侧的var_dump检索到它。

echo ($_POST['dataArr'][1]); 

试图输出,当一个特定的项目,在这种情况下,这可能是“约翰” 它会代替输出的第一个项目的第2个字符“R”第二项,则会出现问题就在这里。这出现在Ajax测试窗口中。我正在寻找整个单词。 它是一个语法错误还是数据如何传递的问题?

+1

你不是真的发送一个数组。使用'console.log(“dataArr =”+ dataArr)',或使用'var_dump'。你应该已经注意到了,或者'var_dump'为你回应了什么? – Bergi 2013-05-11 17:22:46

+0

这是什么'dataStr'好?你最初想发送吗? – Bergi 2013-05-11 17:24:27

+1

尝试使用'data:{dataArr:dataArr}' – 2013-05-11 17:24:34

回答

2

我认为这个问题与你如何在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']); 
1

这是因为你的阵列是越来越转换为字符串形式。

JSON.stringify()在客户端和json_decode在服务器端

在Ajax调用

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

,并在PHP代码

$dataArr = json_encode($_POST['dataArr']); 
var_dump($dataArr); 
相关问题