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

IT技术 javascript php jquery json ajax
2021-02-20 12:45:01

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

PHP 文件(例如.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个回答

使用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"
});
不要忘记使用 async: false
2021-04-21 12:45:01
@k_sel 这几乎是一个行业标准。每个人都将它用于 AJAX。您会注意到 JSON 也是有效的 JavaScript。
2021-05-05 12:45:01
非常有帮助!它肯定会让一切变得更简单、更漂亮。
2021-05-06 12:45:01
对于其他菜鸟:响应必须是纯 json。我在里面有一些 HTML,一个评论。没有错误信息,只是失败。
2021-05-07 12:45:01
非常感谢。它对我真的很有帮助
2021-05-08 12:45:01

看看PHP中的json_encode()您可以使用 dataType: "json" 参数让 $.ajax 识别这一点。

@Xeon06,很好,但对于那些阅读此线程并像我一样尝试的人来说,这是一个参考...当从 php => 返回数组时json_encode($theArray)转换为一个字符串,对我来说,对于像我这样的软 js 用户来说,操作 esp 并不容易。

在 js 中,您最好使用 JSON.parse 来获取数组的值和/或数组的键,var jsArray = JSON.parse(data)因为数据是从 php 返回的数组。json 编码的字符串转换为 js 对象,现在可以轻松操作。

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

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

可能很奇怪,如果您正在处理多维数组,请尝试json_encode使用内部数组,因此$parent_array = array (json_encode($child_array));. 它在我的情况下有效。
2021-04-28 12:45:01

看看json_encode(http://php.net/manual/en/function.json-encode.php)。它从 PHP 5.2 开始可用。使用参数dataType: 'json'为您解析它。那么你将把 Object 作为第一个参数成功。有关更多信息,请查看 jQuery 文档:http : //api.jquery.com/jQuery.ajax/

Php 有一个超级性感的功能,只需将数组传递给它:

$json = json_encode($var);

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

简单:)