我正在寻找一个更好的解决方案来使用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数组。
想法,有人吗?
答案 0 :(得分:112)
使用JSON在客户端和服务器之间传输数据类型(数组和对象)。
在PHP中:
在JavaScript中:
PHP:
echo json_encode($id_numbers);
JavaScript的:
id_numbers = JSON.parse(msg);
正如Wolfgang所说,你可以给jQuery提供第四个参数来自动为你解码JSON。
id_numbers = new Array();
$.ajax({
url:"Example.php",
type:"POST",
success:function(msg){
id_numbers = msg;
},
dataType:"json"
});
答案 1 :(得分:9)
在PHP中查看json_encode()。您可以使用dataType:“json”参数获取$ .ajax来识别它。
答案 2 :(得分:1)
@ Xeon06,很好,但对于那些阅读这个帖子并像我一样尝试的人来说......
从php =&gt;返回数组时json_encode($theArray)
。转换为一个字符串,对我来说,像我这样的软js用户不容易操纵esp。
在js中,您正在尝试使用JSON.parse获取数组的数组值和/或键,如var jsArray = JSON.parse(data)
中数据从php返回数组。 json编码的字符串转换为js对象,现在可以轻松操作。
e.g。 foo = {one:1,two:2,three:3} - 在JSON.parse之后得到
for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) }
- 打印到你的firebug控制台。瞧!
答案 3 :(得分:0)
查看json_encode
(http://php.net/manual/en/function.json-encode.php)。它从PHP 5.2开始提供。使用参数dataType: 'json'
为您解析它。你将把Object作为第一个成功的参数。有关更多信息,请查看jQuery文档:http://api.jquery.com/jQuery.ajax/
答案 4 :(得分:0)
Php具有超级性感的功能,只需将数组传递给它:
$json = json_encode($var);
$.ajax({
url:"Example.php",
type:"POST",
dataType : "json",
success:function(msg){
console.info(msg);
}
});
简单:)
答案 5 :(得分:0)
好吧,我知道我来不及了,但是我尝试了所有的解决方案,但都没有成功!
所以这就是我设法做到的。
首先,我正在研究一个Asp.Net MVC项目。
我唯一更改的是在我的c#方法getInvitation
中:
public ActionResult getInvitation (Guid s_ID)
{
using (var db = new cRM_Verband_BWEntities())
{
var listSidsMit = (from data in db.TERMINEINLADUNGEN where data.RECID_KOMMUNIKATIONEN == s_ID select data.RECID_MITARBEITER.ToString()).ToArray();
return Json(listSidsMit);
}
}
JS中的成功函数:
function successFunction(result) {
console.log(result);
}
我将方法类型从string[]
更改为ActionResult
,当然最后我用Json方法包装了数组listSidsMit
。