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

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

有帮助吗?

解决方案

我喜欢克里斯的方法,但我认为我可以提供一些改进。由于您已经拥有3个单独的实体,为了减少重新编码所有内容的需要,您可以通过 include'page.php'将PHP合并到一个文件中并通过以下方式发送对象具有为每个人所做的事情命名的属性的JSON(简称“名称”,“日期”和“模糊事件”)。发送请求的客户端代码将简单地将您的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文件无关(即你没有在该页面上使用该部分),然后它将返回一个空白属性,你根本就不会使用它(基本上使它成为“一个尺寸适合所有”)事物类型。)

希望它适用于你!

其他提示

您可以像这样格式化JSON:

"user" : [ {
    "name" : "Harry",
    "hobby" : "Skating"
}, {
    "name" : "Dave",
    "hobby" : "Scuba Diving"
} ],
"news" : [ {
    "date" : "3/13/05",
    "title" : "Blah",
    "postedby" : "Mike",
} ]

现在在您的AJAX响应中:

var data = eval('('+ xhr.responseText +')'); // Ajax response
var user = data.user[0].name; // Harry
var user2 = data.user[1].name; // Dave
var title = data.news[0].title;

您可以使用for循环遍历数据。在上面的示例中,您现在应该看到如何使用PHP来格式化具有多个类别(用户,新闻等)的JSON,并通过一次调用返回所有内容。如果您想要更详细的示例,请参阅文章以及< a href =“http://www.devarticles.com/c/a/JavaScript/AJAX-with-JSON/1/”rel =“nofollow noreferrer”>这个。

我认为您必须根据页面上的这3个部分制作JSON格式,对它们进行ID,以便在响应后您可以将它们填充到这些部分。

我个人喜欢json方法但是如果你是json的新手,或者由于任何原因不习惯使用json,那么专门为此设计的jQuery插件名为 jQuery Taconite插件

在Rails社区中,第三种方式称为RJS,现在并不是那么热门,感觉有点过时,但仍有自己的粉丝。我很好奇是否有人将RJS移植到PHP?

这对我有用 php代码:

//for test
$categoryName = "category";
$idcategory = "1";

 $json = "{'productcategory':[{'categoryname':'".$categoryName."','idcategory':'".$idcategory."'}]}";           
 echo $json; 

的javascript:

var str = xmlhttp.responseText.trim();
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json);
alert(obj.productcategory[0].idcategory);
alert(obj.productcategory[0].categoryname);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top