如何从AJAX调用返回一个数组?

时间:2012-01-11 17:36:52

标签: javascript php jquery json ajax

我正在寻找一个更好的解决方案来使用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数组。

想法,有人吗?

6 个答案:

答案 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

相关问题