2

我有一个存储在 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);
}
4

3 回答 3

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 知道会发生什么并正确解码结果。

于 2013-08-13T16:40:22.660 回答
0

尝试做这样的事情:

$.post(url,{contentVar:cv}
   function(response)
   {
      alert(response[0]);
   },'json'
);
于 2013-08-13T16:39:53.703 回答
0

您需要将 json 字符串格式转换为 javascript 对象/数组。

var 结果 = $.parseJSON(data);

看到这个问题jQuery ajax request with json response,怎么做?了解更多详情。

但是有一些奇怪的是,如果返回'A​​rray',php没有将数组转换为json,如果($contentVar == "cv1")返回false会发生什么?如果您要将数组返回到 javascript,则需要转换为字符串(json 格式非常适合此操作)。

于 2013-08-13T16:59:15.867 回答