我继承了一些我需要调试的代码。它目前无效。我的任务是让它发挥作用。没有给我任何其他要求。不,这不是家庭作业,这是一项维护噩梦般的工作。
ASP.Net(Framework 3.5),C#,jQuery 1.4.2。这个项目大量使用jQuery和AJAX。页面上有一个下拉列表,当选择一个项目时,它应该将该项目(它是用户)添加到数据库中的对象。
为了实现这一点,前一个程序员首先在页面加载时通过AJAX动态加载整个页面。要做到这一点,他有5个div,每个都从jQuery调用加载到网站的不同整页。
不知何故,HTML和BODY以及所有其他内容被剥离,div的内容加载了aspx页面的内容。这对我来说似乎是非常错误的,因为它依赖浏览器神奇地删除html,head,body,form标签并与现有的html head body form标签合并。
此外,由于“content”页面以字符串形式返回,因此之前的程序员在将该代码附加到div之前会运行此代码:
function CleanupResponseText(responseText, uniqueName) {
responseText = responseText.replace("theForm.submit();", "SubmitSubForm(theForm, $(theForm).parent());");
responseText = responseText.replace(new RegExp("theForm", "g"), uniqueName);
responseText = responseText.replace(new RegExp("doPostBack", "g"), "doPostBack" + uniqueName);
return responseText;
}
当下拉列表本身触发它的onchange事件时,这里是被解雇的代码:
function SubmitSubForm(form, container) {
//ShowLoading(container);
$(form).ajaxSubmit( {
url: $(form).attr("action"),
success: function(responseText) {
$(container).html(CleanupResponseText(responseText, form.id));
$("form", container).css("margin-top", "0").css("padding-top", "0");
//HideLoading(container);
}
}
);
}
这在IE中爆发,消息“Microsoft JScript运行时错误:对象不支持此属性或方法” - 我认为,这必须是$(form).ajaxSubmit方法不存在。
这段代码真正想要做什么?我现在转过身来,我认为我唯一的选择是废弃一切并重新开始。但除非必要,否则我宁愿不这样做。
这段代码好吗?它是否与.Net有效,这就是我们遇到问题的原因吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
似乎有太多的jQuery乐趣在继续。我完全重写了整个代码块,因为它首先设计得很糟糕。