2009-04-08 96 views
0

我想创建一个Web应用程序。请求几个响应

有些情况下,当用户的请求会导致刷新2-3的内容或有时甚至更多的容器。最简洁的方法是按顺序依次运行请求,并逐个处理结果。如果可能的话,我希望只有一个请求,并收集所有回复的结果。

例如:让我们说,有一个主容器(M),以及其他一些(较小)的容器(A,B,C等)

最简单的方法是: 请求主要功能从服务器男,显示它在并购容器

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

根据用户要求的主要功能,只有一些容器需要刷新其内容,而不是全部。

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

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

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

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

先前类JSON溶液应该是这样的: “A_containeryyythis为A_containerxxxC_containeryyyOther内容C_container内容”

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

有没有人会为此提出更好的方法,或者谁能够以Json或XML等方式显示安全的方式?

+0

不知道你的容器的意思。这是在客户端还是服务器上?我真的不明白这个问题。 – cletus 2009-04-08 21:42:59

回答

2
以前的类JSON的解决方案是这样的:“A_containeryyythis是A_containerxxxC_containeryyyOther内容C_container内容”

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

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

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

0

格式使用XML你的要求:

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

然后解析XML在XMLHttpRequest的回调:

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 */ 
}