我使用的Dojo支持Ajax的道場 - dojo.byId()在Ajax響應
function handleSubmit(evt, targetUrl, submitForm, updateDiv) {
dojo.stopEvent(evt);
dojo.xhrPost({
url: targetUrl,
handleAs: "text",
load: function(response){
updateDiv.innerHTML = response;
wireEvents();
return response;
},
form: submitForm,
error: function(response, ioArgs) {
console.error("HTTP status code: ", ioArgs.xhr.status);
return response;
}
});
}
來自服務器的響應包含比我需要更多的數據。 我希望能夠將此
load: function(response){
updateDiv.innerHTML = response;
wireEvents();
return response;
},
替換成類似
load: function(response){
updateDiv.innerHTML = dojo.byId('elemToExtract', response);
wireEvents();
return response;
},
我和Ajax響應的一部分來更新我的網頁。我需要能夠在響應中使用dojo.byId選擇器(使用響應作爲上下文根或類似於我在jQuery中找到的東西)。
你知道我該怎麼做到這一點?
謝謝
我在看看API文檔。似乎這個func在dojo 1.3.2中使用。目前我正在使用1.2.x。我會看看是否可以在這個版本中找到相對的功能 – mickthompson 2009-09-08 13:19:48
我很抱歉,我使用的是版本1.3,但我沒有注意到創建在以前的版本中不可用。無論如何,你可以應用相同的技術使用較低級別的DOM api:你用document.createElement('div')創建元素並手動設置innerHTML屬性,那麼你應該可以使用dojo.byId。重點是用DOM將純文本轉換爲html。 – 2009-09-08 13:45:03
我認爲dojo.create不僅僅是創建一個包含內容的元素。如果您能夠將其結果作爲byId的第二個元素傳遞,dojo.create應該創建一個dojo.byId('elemToExtract',tempDiv)能夠解析的Document。 API說它必須是一個文檔。我可以創建一個帶有內容(innerHTML)=響應的div元素的tempDocument。問題是我添加的元素將僅包含文本,並且它沒有可由dojo.byId解析的結構 – mickthompson 2009-09-08 15:21:41