请求多个回复

时间:2009-04-08 21:34:15

标签: ajax httpwebrequest

我想创建一个Web应用程序。

有些情况下,当用户的请求会导致2-3个或有时甚至更多容器中的内容刷新时。最干净的方法是在一个序列中一个接一个地运行请求并逐个处理结果。如果可能的话,我想只有一个请求,并收集回复的所有结果。

例如:假设有一个主容器(M)和一些其他(较小的)容器(A,B,C等)

简单的方法是: 从服务器请求M的主要功能,在M容器中显示

从专用于A_container的服务器获取一些其他内容,在A_container中显示它 从专用于B_container的服务器获取一些其他内容,在B_container中显示它 从专用于C_container的服务器获取一些其他内容,在C_container中显示它

根据用户请求的主要功能,只有部分容器必须刷新内容,而不是全部内容。

我想尽量减少请求的数量。实际上将它最小化为一个。当然,它可以由Json或XML完成。

我想从服务器收集所有响应,封装它们(A_container:“这是A_container的内容”,C_container:“C_container的其他内容”),并将其发送回客户端,客户端将在解压缩它,关于内容,它会将每个内容委托给适当的容器。

我的问题是,当你知道返回的数据变化很大时你会怎么做:在某些情况下它甚至可能包含html元素,引号,双引号等。如果我没有弄错的话,一些特殊情况,这也可能搞砸了Json和xml。

我的想法是用特殊的分隔符来划分不同的内容(现在只是为了一个简单的例子,让我们使用xxx和yyy)。这是一个非常流畅的解决方案,但如果分隔符足够独特,你就无法确定内容。

之前类似Json的解决方案如下所示: “A_containeryyyt这是A_containerxxxC_containeryyy C_container的其他内容的内容”

然后在客户端首先用xxx分割代码,这将导致两个数组元素(字符串)中的这种情况,yyy将再次拆分。第一个元素是容器的id,第二个元素是容器的id。在此之后,最后一步将遍历新数组,并将结果显示在适当的容器中。

有没有人建议更好的方法,或者谁可以在Json,XML等中显示安全的方法?

2 个答案:

答案 0 :(得分:2)

之前类似Json的解决方案如下所示:“A_containeryyyt这是A_containerxxxC_containeryyy的内容C_container的其他内容”

看起来更像是来自服务器的“text / plain”响应,你将通过javascript拆分处理。你真正想做的是从服务器返回一个json对象,例如

object = {'A container content','etc','etc','etc'}

然后使用eval(object)从客户端使用javascript评估。从那里我将填充你的每个“容器”。

答案 1 :(得分:0)

使用XML格式化您的请求:

<response>
    <m>Content</m>
    <a>Content</a>
    <b>Content</b>
    <c>Content</c>
</response>

然后解析XMLHttpRequest回调中的XML:

var xmldoc = req.responseXML;
var root = xmldoc.getElementsByTagName('response').item(0);
var contentm = root.getElementsByTagName('m');
var contenta = root.getElementsByTagName('a');
var contentb = root.getElementsByTagName('b');
var contentc = root.getElementsByTagName('c');
if (contentm) {
  /* Update Container M */
}
if (contenta) {
  /* Update Container A */
}
if (contentb) {
  /* Update Container B */
}
if (contentc) {
  /* Update Container C */
}