我继承了一些需要调试的代码。它现在不工作。我的任务是让它工作。没有给我其他要求。不,这不是家庭作业,这是维护工作的噩梦。
asp.net(框架3.5)、c、jquery 1.4.2。这个项目大量使用jquery和ajax。页面上有一个下拉列表,当选择一个项时,它应该将该项(它是一个用户)添加到数据库中的一个对象中。
为了实现这一点,前一个程序员首先在页面加载时,通过ajax动态加载整个页面。为此,他有5个div,每个div都是从jquery调用加载到网站中不同的完整页面。
不知何故,html和body以及所有其他内容都被剥离,div的内容与aspx页面的内容一起加载。这对我来说似乎是难以置信的错误,因为它依赖于浏览器神奇地去掉html、head、body、form标记,并与现有的html head-body表单标记合并。
另外,由于“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起作用,这就是我们遇到问题的原因吗?