如何从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_encode
(http://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); } });
简单:)