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

rof*_*fle 7 javascript php ajax json

这里不是真正寻找代码示例,只是概念.

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

Mik*_*ike 4

我喜欢 Cris 的方法,但我认为我可以提供一些改进。由于您已经拥有 3 个独立的实体,为了减少重新编码所有内容的需要,您可以执行以下操作:将 PHP 合并到一个文件中,include 'page.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*/}
}
Run Code Online (Sandbox Code Playgroud)

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

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

    doStuffWithNames(returnedObject.names);
    doStuffWithDates(returnedObject.dates);
    playWithFuzzyThings(returnedObject.fuzzyThings);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

        echo '"fuzzyThings":{';
        include 'fuzzyThings.php';
        echo '}';
    echo '}';
?>
Run Code Online (Sandbox Code Playgroud)

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

希望它对你有用!