如何从AJAX调用返回数组?

我正在寻找一个更好的解决scheme来使用jQuery进行AJAX调用,让PHP文件返回一个数组,并将它作为一个Javascript数组出现在客户端。 这是我一直在做的事情:

PHP文件(Example.php):

<?php $id_numbers = array('NES-ZL','NES-AL','SNS-ZL'); for ($i=0; $i<count($the_array); $i++){ echo $id_numbers[$i]; echo '|'; } ?> 

JS文件:

 id_numbers = new Array(); $.ajax({ url:"Example.php", type:"POST", success:function(msg){ id_numbers = msg.split('|'); } }); 

我目前的方法对我的口味来说太过复杂了。

我想要做的就是能够做到

 return $id_numbers; 

在PHP端,并直接将其转换为AJAX调用后的Javascript数组。

想法,任何人?

使用JSON在客户端和服务器之间传输数据types(数组和对象)。

在PHP中:

  • json_encode
  • json_decode

在JavaScript中:

  • JSON.stringify
  • JSON.parse

PHP:

 echo json_encode($id_numbers); 

JavaScript的:

 id_numbers = JSON.parse(msg); 

正如沃尔夫冈所说,你可以给jQuery第四个参数来为你自动解码JSON。

 id_numbers = new Array(); $.ajax({ url:"Example.php", type:"POST", success:function(msg){ id_numbers = msg; }, dataType:"json" }); 

看看PHP中的json_encode() 。 你可以通过dataType:“json”参数来获得$ .ajax的识别。

@ Xeon06,不错,但只是作为一个阅读这个线程和尝试像我一样…当从PHP => json_encode($theArray)返回数组。 转换成一个string,这对我来说不是很容易操作像我这样的软js用户。

在js里面,你正尝试着使用JSON.parse来获取数组的值和/或键值var jsArray = JSON.parse(data)其中data是从php返回的数组。 json编码的string被转换为js对象,现在可以很容易地操作。

例如foo = {one:1,two:2,three:3} – 在JSON.parse之后获得

for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) } – 打印到你的萤火虫控制台。 瞧!

看看json_encodehttp://php.net/manual/en/function.json-encode.php)。; 它是从PHP 5.2起可用的。 使用参数dataType: 'json'来为你parsing。 那么你将会把Object作为成功的第一个参数。 有关更多信息,请参阅jQuery-documentation: http : //api.jquery.com/jQuery.ajax/

PHP有一个超级性感的function,只是传递给它的数组:

 $json = json_encode($var); $.ajax({ url:"Example.php", type:"POST", dataType : "json", success:function(msg){ console.info(msg); } }); 

简单:)