2011-11-09 71 views
2

我正在使用現代jQuery 1.5 ajax請求。到同一個域上的頁面。 我試圖改善內部網站使用油脂猴和jquery的行爲。jquery - ajax請求指定內容類型爲html

var jqxhr = $.ajax("anotherpage-response.html") 
.success(function(data) {alert("cmp"); console.log(data);}) 
.error(function() { alert("error"); }) 
.complete(function() { alert("complete"); }); 

它當前正在作爲字符串返回。任何想法如何我可以得到它返回作爲一個dom像對象,我可以使用jquery選擇器進行?

我想我有點像fileType: html後,但它似乎是在Ajax請求的選項。也許我只需要正確讀取api?

感謝

+3

只是傳遞'data' jQuery的? '$(data)' –

+0

順便說一句。該選項將是'dataType',但文檔說:*以純文本格式返回HTML,所以這不會幫助我想。 –

回答

2

你應該在這個問題上對jQuery的文檔閱讀起來:http://api.jquery.com/jQuery.ajax/ 你正在尋找可能的事情是這樣的:的dataType

$.ajax({ 
    url: 'request.html', 
    succes: function(data){ 
     .. do something here! .. 
    }, 
    dataType: 'html' 
}); 

我希望這有助於

+0

這是否工作?該文件說:*以純文本形式返回HTML *。你試過了嗎? –

+1

這主要設置返回值的標題。然後你可以使用$(data)從中創建一個jQuery對象。但這不是一個正常的身體。你可以使用data.find('body')來查找和操作這個對象。你必須解決這個問題,jquery嚴重需要對此採取一些行動。我必須做很多操作,考慮返回一個json對象並用javascript構建html –

+1

然後我必須說你的答案是誤導性的。看來你正在建議使用'dataType:'html'',它應該可以工作。但是增加這些並不能改善這種情況,並使OP仍然處於現在的狀態....不一定有幫助。 –

0

在jQuery的1.4及以下,你可以通過傳遞dataType指定的內容類型。在更高版本中,jQuery會嘗試爲您確定內容類型。

嘗試這樣:

$.ajax({ 
    url: "anotherpage-response.html", 
    success: function(response, status, xhr){ 
     var ct = xhr.getResponseHeader("content-type") || ""; 
     if (ct.indexOf(‘html’) > -1) { 
      //handle html content 
     } 
     else if (ct.indexOf(‘json’) > -1) {  
      //handle json object 
     } 
    } 
}); 
3

不管你會得到什麼字符串爲純文本。

從上的dataType jQuery的文檔:

「」 HTML「:返回HTML作爲純文本;在DOM插入時包含的腳本標籤進行評估」

你總是可以把明文轉換爲DOM對象,但..

$.ajax({ 
url: 'request.html', 
succes: function(data){ 
    $(data) // This is now (kind of) a DOM object that you can use jQuery selectors on 
}, 
dataType: 'html' 
});