Php 来自一个AJAX请求的多个响应
这里没有真正的代码示例,只是概念Php 来自一个AJAX请求的多个响应,php,javascript,ajax,json,Php,Javascript,Ajax,Json,这里没有真正的代码示例,只是概念 我现在在一个页面上有三个部分,它们通过对PHP脚本的三个单独的AJAX调用进行更新,这些调用返回JSON。将这三个调用压缩成一个更大的调用并在客户端接收JSON响应的最简单方法是什么?如何在客户端上分离响应,以便根据返回的信息操作响应数据?您可以将JSON格式化为以下格式: "user" : [ { "name" : "Harry", "hobby" : "Skating" }, { "name" : "Dave", "hobby
我现在在一个页面上有三个部分,它们通过对PHP脚本的三个单独的AJAX调用进行更新,这些调用返回JSON。将这三个调用压缩成一个更大的调用并在客户端接收JSON响应的最简单方法是什么?如何在客户端上分离响应,以便根据返回的信息操作响应数据?您可以将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格式化为多个类别(用户、新闻等),并只需一次调用即可返回所有内容。如果您想要一个更详细的示例,请参阅文章以及。我认为您必须根据页面上的这3个部分制作JSON格式,对它们进行标识,以便在响应后可以将它们填充到这些部分 我喜欢Cris的方法,但我认为我可以提供一些改进。由于您已经有了3个独立的实体,为了减少重新编码的需要,您可以通过
include'page.PHP'
将PHP合并到一个文件中,并通过JSON发送一个对象,该对象的属性根据每个实体的功能命名(比如“名称”、“日期”和“模糊内容”)。然后,发送请求的客户端代码只需在一个请求中发送3个函数各自发送的所有参数。返回的JSON看起来像这样(将您的对象/数组/任何内容放在注释区域):
一旦您将其发送到客户端,我假设每个客户端可能已经有一个函数(或一组函数)来处理其返回数据,您应该能够以以下方式调用它们:
function handler(retText) {
var returnedObject = eval(retText);
doStuffWithNames(returnedObject.names);
doStuffWithDates(returnedObject.dates);
playWithFuzzyThings(returnedObject.fuzzyThings);
}
此外,在PHP端,您可以通过以下方式创建统一的PHP页面(无需重新编码):
注意:您可能需要编辑3个php页面,以便它们能够正确地检查$\u POST,并且不会干扰其他页面的功能。如果您还没有这样做,我更喜欢使用if(isset($\u POST['where']){…}
的方法来检查所有内容是否正确发送,您可以包含任意数量的内容,如果与php文件无关(即,您没有在该页面上使用该部分),那么它将返回一个空白属性,而您根本不会使用它(基本上使其成为“一刀切”的类型)
希望它对你有用 我个人喜欢json方法,但是如果您不熟悉json或者出于任何原因不喜欢使用它,那么有一个专门为此设计的jQuery插件,名为
在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);
我喜欢你的进步,我没有按你的方式考虑。干得好,伙计。
//for test
$categoryName = "category";
$idcategory = "1";
$json = "{'productcategory':[{'categoryname':'".$categoryName."','idcategory':'".$idcategory."'}]}";
echo $json;
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);