2010-08-07 138 views
0

我正在使用XMLHTTPRequest來僞造一個RESTful接口。響應對象從請求中返回數據後,如何向用戶呈現該數據?例如,在一個PUT請求中,服務器實際上會響應完整的HTML數據頁(大多數情況下),並且我想將整個頁面顯示給客戶端。任何想法如何?我確信那裏有答案,但是我缺乏JS的知識讓我陷入困境,可能是由於JS術語不佳。向客戶端呈現XMLHTTPRequest響應?

請注意,我不太願意使用現代JS套件,如DOJO或JQuery。另外,我並不是真的在尋找類似Ajax的效果。事實上,一旦一對夫婦瀏覽器支持正確的HTML5規範表單方法(GET/POST/PUT/DELETE),我將會爲此扔掉這個JS hack。

任何幫助將不勝感激!

編輯:與他人交談時,提出了兩個想法。一個是使用IFrame並將數據推送到那裏。另一個是重定向到"data:text/html,"+xhr.responseText,它可以工作,但對用戶來說很難看。 :/ ..我可能最終放棄和HTML表單隱藏方法參數(隱藏輸入),並處理它的服務器端,因爲我只是還沒有看到一個很好的方式來使用JS來實現客戶端支持一個RESTful界面。

+0

你看過http://api.jquery.com/jQuery.get/嗎? – mplungjan 2010-08-07 18:02:16

+0

這與Ajaxy XMLHTTPRequest基本上不一樣嗎?我的意思是,我確定它提出請求並可以提取數據,但XMLHTTPRequest也是這樣做的。問題是,我如何將完整的HTML頁面呈現給客戶端? – 2010-08-07 23:49:22

回答

0

您可以打開一個彈出式容器並將所有回覆寫入該容器,也可以使用JavaScript打開一個新窗口並將所有響應數據放入該窗口。

爲例如:

function writeConsole(content) { 
    top.consoleRef=window.open('','myconsole', 
    'width=350,height=250' 
    +',menubar=0' 
    +',toolbar=1' 
    +',status=0' 
    +',scrollbars=1' 
    +',resizable=1') 
    top.consoleRef.document.writeln(
    '<html><head><title>Console</title></head>' 
    +'<body bgcolor=white onLoad="self.focus()">' 
    +content 
    +'</body></html>' ) 
    top.consoleRef.document.close() 
} 
+0

那麼這將被用於所有網站,所以彈出窗口似乎不是最好的解決方案。我想我寧願重定向到''data:text/html,「+ xhr.responseText':o – 2010-08-08 15:23:45