我正在使用 ajax 请求的内容设置 div 的innerHTML 变量:
new Ajax.Request('/search/ajax/allakas/?ext_id='+extid,
{
method:'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
$('admincovers_content').innerHTML=response;
},
onFailure: function(){ alert('Something went wrong...') }
});
响应文本包含以下形式:
<form id="akas-admin" method="post" action="/search/ajax/modifyakas/">
<input type="text" name="formfield" value="i am a form field"/>
</form>
然后我调用一个应该提交该表单的函数:
$('akas-admin').request({
onComplete: function(transport){
//alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});
问题是$('akas-admin)
回报null
,我尝试将带有此id的表单放入原始文档中,这有效。
问题:我可以以某种方式“重新验证”已使用innerHTML 插入的dom 或access 元素吗?
编辑信息:document.getElementById("akas-admin").submit()
工作得很好,问题是我不想重新加载整个页面,而是通过 ajax 发布表单并在回调函数中获取响应文本。
Edit:
根据提供的答案,我用以下观察者替换了执行请求的函数:
Event.observe(document.body, 'click', function(event) {
var e = Event.element(event);
if ('aka-savelink' == e.identify()) {
alert('savelink clicked!');
if (el = e.findElement('#akas-admin')) {
alert('found form to submit it has id: '+el.identify());
el.request({
onComplete: function(transport){
alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});
}
}
});
问题是我尽可能alert('savelink clicked!')
; 。 findelement 不返回表单。我尝试将保存链接放置在表单的上方和下方。两者都不起作用。
我也认为这种方法有点笨拙,我做错了。有人能指出我正确的方向吗?