php - 来自一个 AJAX 请求的多个响应

标签 php javascript ajax json

这里并不是真的在寻找代码示例,只是在寻找概念。

我现在在一个页面上有三个部分,它们通过对 PHP 脚本的三个单独 AJAX 调用进行更新,这些脚本返回 JSON。将这三个调用压缩为一个更大的调用并以 JSON 形式在客户端接收响应的最简单方法是什么?我将如何分离客户端上的响应,以便我可以根据发回的信息处理响应数据?

最佳答案

我喜欢 Cris 的方法,但认为我可以提供一点改进。由于您已经有 3 个独立的实体,为了减少重新编码所有内容的需要,您可以通过 include 'page.php' 将 PHP 合并到一个文件中,然后通过JSON 的属性以它们各自的作用命名(比如“名称”、“日期”和“fuzzyThings”)。然后,您发送请求的客户端代码将简单地让您的 3 个函数单独发送的所有参数在一个请求中发送。返回的 JSON 看起来像这样(将您的对象/数组/任何内容放在注释区域):

{
    "names" : {/*stuff needed for names goes in here*/},
    "dates" : {/*stuff needed for dates goes in here*/},
    "fuzzyThings" : {/*all fuzzy things goes in here*/}
}

一旦你把它送到客户端,因为我假设每个可能已经有一个函数(或一组函数)来处理它的返回数据,你应该能够以这种方式调用它们:

function handler(retText) {
    var returnedObject = eval(retText);

    doStuffWithNames(returnedObject.names);
    doStuffWithDates(returnedObject.dates);
    playWithFuzzyThings(returnedObject.fuzzyThings);
}

此外,在 PHP 端,您可以通过以下方式制作统一的 PHP 页面(希望无需重新编码任何内容):

<?php
    echo '{';
        echo '"names":{';
        include 'names.php';
        echo '},';

        echo '"dates":{';
        include 'dates.php';
        echo '},';

        echo '"fuzzyThings":{';
        include 'fuzzyThings.php';
        echo '}';
    echo '}';
?>

注意:您可能需要编辑 3 个 php 页面,以便它们正确检查 $_POST 并且不会干扰其他页面的功能(如果您还没有的话),我更喜欢这种方法if(isset($_POST['whatever'])) { ... } 检查所有内容是否已正确发送,这样,您可以包含任意数量的内容,如果有与 php 文件无关(即您没有在该页面上使用该部分),然后它将返回一个空白属性,您根本不会使用它(基本上使其成为“一刀切”类型的事情)。

希望对你有用!

关于php - 来自一个 AJAX 请求的多个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/818700/

相关文章:

php - 如何根据类别名称从wordpress数据库中选择所有帖子?

javascript - AJAX 在 Firefox 中无法正常工作

javascript - 动态创建一个选择,然后更改 ajax 调用以附加 html

javascript - 什么构成用户手势

javascript - jQuery 帖子在 Chrome 中有效,但在 IE 或 FF 中无效

javascript - 如何让JS在使用Ajax收到的HTML响应中执行?

php - 如何提高亚马逊sqs排队速度?

PHP5 SQLite3 重新编译更新,删除限制

php - 将学生添加到组中

javascript - Accordion 面板不应在 if 条件下打开 - coffeescript