2009-04-08 89 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 */ 
}