0

我想创建一个 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_containeryyythis is content for A_containerxxxC_containeryyyOther content for C_container”

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

有没有人会为此提出一个更好的方法,或者谁能展示一种在 Json 或 XML 等中执行此操作的安全方法?

4

2 回答 2

2
之前的类似 Json 的解决方案如下所示:“A_containeryyythis is content for A_containerxxxC_containeryyyOther content for C_container”

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

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

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

于 2009-04-08T21:48:42.557 回答
0

Format your request using XML:

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

Then parse the XML in your XMLHttpRequest callback:

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 */
}
于 2009-04-08T23:17:27.990 回答