我使用的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