这里没有真正寻找代码示例,只是概念。来自一个AJAX请求的多个响应
我现在有一个网页,正在通过三个独立的AJAX更新调用PHP脚本,返回JSON的三个部分。将这三个调用压缩成一个更大的调用并以JSON方式接收客户端的响应最简单的方法是什么?我将如何分离客户端上的响应,以便根据返回的信息来操作响应数据?
这里没有真正寻找代码示例,只是概念。来自一个AJAX请求的多个响应
我现在有一个网页,正在通过三个独立的AJAX更新调用PHP脚本,返回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文件(即你没有在该页面上使用该部分),那么它将返回一个空白属性,并且你根本不会使用它(基本上使它成为“一刀切”类型的东西)。
希望工程为ya!
您可以格式化你的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格式化,并且只需一次调用即可返回所有内容。如果您想要更详细的示例,请参阅this文章以及this。
我认为你必须做一个JSON格式根据页面上的3个部分,其中ID以便响应后您可以将它们填充到那些部分。
我个人喜欢JSON的方法,但如果你是新来的JSON或感觉不舒服的工作以任何理由还有一个jQuery插件,专门为此呼吁jQuery Taconite Plugin
在Rails社区设计有一个第三种叫RJS的方式现在并不那么热,感觉有些陈旧,但仍然有自己的粉丝。我很好奇,如果有人将RJS移植到PHP或不?
这workimg我
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);
我喜欢你的进步,我也没多想你的方式。做得好的伴侣。 – 2009-05-04 04:32:29