我有一个存储在php中的数组:$cv1 = array('a','b');
正如您在下面的代码中看到的那样,我试图从数组中获取相应的数据,然后将其委托给两个单独的函数。
但是从php回调函数返回的数据是:'Array'而不是'a','b'; 结果[0]得到'A'结果[1]得到'r'等等。
感谢您的帮助!
js:
$('a').on('click',function(){
var cv = $(this).data('cv');
var url= '_php/myphp.php';
$.post(url,{contentVar:cv},function(data) {
result=data;
return result;
}).done(function() {
alert(result[0]);
$('#myDiv').html(result[1]);
});
});
PHP:
$cv1 = array("a","b");
$contentVar = $_POST['contentVar'];
if($contentVar == "cv1")
{
echo json_encode($cv1);
}
答案 0 :(得分:3)
在PHP中常见的是,当它意外地被转换为字符串时,你得到的是"Array"
而不是实际的数组。那不是你在这里做的事情;我们可以测试一下:
> $cv1 = array("a","b");
array(2) {
[0] =>
string(1) "a"
[1] =>
string(1) "b"
}
> json_encode($cv1);
string(9) "["a","b"]"
$cv1
被正确编码。
你必须像对待其他地方的字符串一样对待它:
> (string)array("a","b")
! Array to string conversion
string(5) "Array"
另外,为什么$.post
有两个成功的回调?第三个参数是成功回调,其作用与.done
相同。使用其中一个(我推荐done
),但不能同时使用两者。
您也可以考虑将json
作为最后一个参数(dataType),以便jQuery知道会发生什么,并将正确解码结果。
答案 1 :(得分:0)
尝试做这样的事情:
$.post(url,{contentVar:cv}
function(response)
{
alert(response[0]);
},'json'
);
答案 2 :(得分:0)
您需要将json字符串格式转换为javascript对象/数组。
var result = $ .parseJSON(data);
有关详细信息,请参阅此问题jQuery ajax request with json response, how to?。
但是有一些奇怪的事情,如果返回'Array',php没有将数组转换为json,如果($contentVar == "cv1")
返回false会发生什么?如果你将一个数组返回到javascript,你需要转换为一个字符串(并且json格式是完美的)。