当前位置: 首页 > 面试题库 >

如何从AJAX调用返回数组?

甄鹏云
2023-03-14
问题内容

我正在寻找一种更好的解决方案,以使用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在客户端和服务器之间传输数据类型(数组和对象)。

在PHP中:

  • json_encode
  • json_decode

在JavaScript中:

  • JSON.stringify
  • JSON.parse

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"
});


 类似资料:
  • 问题内容: 我试图在我自己的函数中使用jQuery ajax调用的返回值,但它始终返回未定义的值。 ajax调用绝对有效,因为当我取消注释警报时,我得到了正确的返回,并且可以在firebug中看到它。我在做蠢事吗? 问题答案: AJAX调用是异步的-这意味着AJAX请求是按常规程序执行顺序发出的,并且在您的程序中这意味着不会将数据返回警报。 您不能以这种方式使用调用的返回值,而是将利用AJAX返回

  • 问题内容: 我正在使用ajax发布一些数据。我想处理该数据并返回到调用jQuery脚本。 这是我的jQuery: 这是我在服务器上的somescript.php: 我在服务器端是否正确执行此操作?ajax调用完成后如何访问返回字符串? 问题答案: 我想到了。需要在PHP中使用echo而不是return。 和jQ:

  • 问题内容: 我想使用函数在ajax调用中获取值。但是该值始终返回未定义状态。返回值仅为1或0。 这是我的代码: 大家好,仍在努力完成这项工作。我现在得到的值显示为1或0。我现在想要完成的是如何在if语句中实现它。我想吃点这样的东西。如果val=0,则返回true;否则,返回true。否则返回假。我不确定我是否在使用ajax函数的正确轨道上。但是,如果有更好的方法可以告诉我,我将不胜感激。 问题答案

  • 问题内容: 谁能告诉我如何将值作为函数的返回值返回。 当您点击注册表格中的提交时,上述功能就会触发(很明显)。问题是,无论响应是什么,此表单都将提交,并且警告框有时不显示任何内容(空白),有时根本不显示。但是,如果我将结尾更改为手动[即用] 替换,则正确的值将显示在警报框中。 PS我比JavaScript的菜鸟还差,因此也欢迎提出一般性改进代码的建议。 问题答案: 问题是,直到……等待……状态改变

  • 问题内容: 我正在使用jQuery的网页上工作。我有一个Ajax调用,它从服务器获取数据并更新div。在该数据内部有一个jQuery函数,但是在将数据加载到页面中之后未调用该函数。我已经在页面中包含了正确的js文件。 这是从Ajax调用返回并放入div的内容: 将html插入页面后,如何使返回的javascript运行? (我将Rails与jRails插件结合使用) 问题答案: 如果要对具有htm

  • 问题内容: 我如何使这个小功能“ imageExists”返回ajax请求是否成功? 问题答案: 我相信您将必须使用同步模式并使用单独的变量来存储返回值。