2010-07-14 88 views
2

我知道JSON可以用來代替Javascript中的XMLHttpRequest,但是我可以提出請求並獲得完全隨意的數據嗎?您可以在XML和XMLHttpRequest之外使用其他格式嗎?

像自定義文本或二進制格式?

或者是接口限於jSON和XML?

我希望我通過什麼我不知道在這裏得到...

一)如何創建無XML或JSON一個普通的要求嗎?

b)如何以普通字符串的形式訪問結果(答案),而不是對象?

回答

4

是的,剛纔設置的內容類型:

var request = new XMLHttpRequest(); 
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); // whatever character set you need. 
request.open("GET", "yourtext.txt", true); 
request.onreadystatechange = function() { 
if(this.readyState == 2) { 
    alert(request.responseText); 
} 
} 
request.send(); 
+0

謝謝!這非常有用。 – 2010-07-14 13:59:47

+0

而我怎麼得到結果作爲一個純字符串,而不是一個對象? – 2010-07-14 14:02:40

+0

通過編輯向您展示如何獲取響應文本。 – Andir 2010-07-14 14:11:55

2

您可以使用任何基於文本的格式:XML,JSON,CSV或text/plain

我不確定如果您嘗試使用二進制格式會發生什麼情況。

+0

如在7位ASCII? – 2010-07-14 13:45:29

+1

我相信它應該能夠解釋任何編碼瀏覽器的字符可以解碼並以Javascript自己的Unicode編碼返回它。 – thomasrutter 2010-07-14 13:53:48

+0

要以跨瀏覽器的方式下載XMLHttpRequest的二進制數據,請參閱此答案。 http://stackoverflow.com/questions/1095102/how-do-i-load-binary-image-data-using-javascript-and-xmlhttprequest/5913807#5913807 – Cheeso 2011-05-06 15:52:21

2

你可以得到的結果早在

  • 一個DOM文檔使用responseText屬性
(如果收到XML)使用responseXML屬性,或
  • 的字符串(不論格式)

    某些瀏覽器也可以將它作爲對象返回,如果它是JSON。

    以字符串的形式取回任何東西的能力允許您自己解析任何格式。

  • +0

    如何告訴它我想要的是一個字符串?您的回答實際上是迄今爲止最好的答案,但其他人對此請求也非常感興趣。我不知道我也應該問這個問題。:-) – 2010-07-14 14:01:12

    +2

    只讀取responseXML屬性,而不讀取responseText屬性。這裏詳細說明:https://developer.mozilla.org/en/xmlhttprequest – thomasrutter 2010-07-14 14:15:10

    1

    您可以設置內容的send()之前顯式類型爲純文本:

    var request = new XMLHttpRequest(); 
    request.open("POST", "/test.php"); 
    request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); 
    request.send(message); 
    
    1

    除了職位提setRequestHeader方法:似乎xmlhttprequest API的w3規範僅對header(即第一個參數)施加(建議的)限制,但對value(即第二個參數)僅施加(建議的)限制。

    以下是規格鏈接:http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method

    AFAIC,這意味着就所請求的傳輸而言,任何數據類型都是有效的。這不會擴展到返回的數據,但只有text和xml被指定。

    雖然我可能是錯的。

    相關問題