2012-07-08 61 views
1

我需要我的網頁上顯示來自一個REST服務返回一個簡單的文本字符串返回。我目前使用的XMLHttpRequest:最簡單的方法從一個REST服務

<div id="returnedText"></div> 
<script type="text/javascript"> 
var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function() { 
    if(xhr.status == 200 && xhr.readyState == 4) { 
    document.getElementById("returnedText").innerHTML=xhr.responseText; 
} 
}; 
xhr.open("GET",url,true); 
xhr.send(null); 
</script> 

是不是有一個更輕的方式?我考慮使用腳本標記,但相關的Web服務不支持JSONP。我也對iframe做了一次天真的嘗試(把REST url作爲src),但它沒有奏效。

回答

1

我做了iframe出現另一次嘗試,實際上這工作得很好:

<iframe src="url"></iframe> 

其中URL是REST服務調用。

我一定是做錯事的第一次(也許身份驗證問題)。

+0

你嘗試過什麼類型的調用?您是否嘗試通過src進行POST調用?如果這樣做的話? – 2013-05-21 23:48:39

+1

@CroconosterShaneVanWyk我還沒有試過,我不認爲你可以做一個POST調用的方式(除非也許你調整你的瀏覽器)。我的問題實際上是特定於GET請求。 – Christophe 2013-05-22 04:56:11

+1

我通過在包含url的表單上進行提交來解決了我的POST問題。在頁面加載時進行,形成method =「post」。供將來參考。然後,我只是使用目標=「」非常方便,現在試圖正確顯示幀大小明智是一個完全不同的故事 – 2013-05-22 10:02:03

0

好iframe的路線是笨重的,因爲你會被加載REST響應進去,然後通過JS把手伸進它獲得響應。更重要的是,它會在瀏覽器的地址欄中產生可見的負載。 AJAX走過廢除了iframe破解:)

JSON-P大約需要儘可能多的設置爲AJAX,如果你的服務器不支持回調,這是一個沒有首發。

AJAX不必被認爲重。將它踢入自己的效用函數中,或者更好地使用一個庫,這樣就可以在一行中做出這樣的請求。 jQuery的例子:

$.get('some/path').done(function(response) { /* do something */ }); 
+0

感謝您的意見。我對iframe的問題是,響應甚至沒有加載(否則我會很高興,因爲我只需要顯示文本,我甚至不需要進入)。至於jQuery,讓我們記住它是一行可見的代碼,但在幕後有數百行...... – Christophe 2012-07-09 22:39:23

相關問題