调用ajax调用时遇到问题,在将ajax数据附加到DOM后,任何引用附加html的Javascript都会返回该对象未定义。
表单使用带有Javascript提交的标签和一些Javascript来修改隐藏字段,这就是eval()
所在的原因。
编辑:这是'href'标签的示例以及为什么我在那里有eval:
javascript:document.faultList.sortBy.value='4';document.faultList.sortByPrev.value='3';document.faultList.Action01.value='SetMyRequestItem';
以前的开发人员在我的时间之前创建这个软件/网站的方式,而不是使用REST风格的系统。
这是我的代码:
function ajaxFormUpdate(formID,linkClass){
$(formID+' '+linkClass).click(function(){
eval($(this).attr('href'));
serialised = $(this).closest(formID).serialize();
$.ajax({
type: "POST",
url: 'jadehttp.dll?EbdMulti_www_01',
data: serialised,
success: function(data) {
//console.log(data)
$(formID).html($(data).find(formID));
loadHandlers();
}
});
return false
});
}
function loadHandlers(){
ajaxFormUpdate('#faultList','.ajaxLink');
ajaxFormUpdate('#accessCardList','.ajaxLink');
ajaxFormUpdate('#facilityList','.ajaxLink');
ajaxFormUpdate('#carParkingList','.ajaxLink');
ajaxFormUpdate('#visitorList','.ajaxLink');
}
loadHandlers();
答案 0 :(得分:0)
通过将.html()
更改为.replaceWith()
(感谢jgauffin让我走上正轨)并使用以下点击处理程序代替标准.click()
$(".selector_class").live('click', function() { alert("new element clicked"); });