ajaxSubmit和其他代码。有人可以帮我确定这段代码在做什么吗?

时间:2010-04-22 18:47:13

标签: asp.net jquery ajax

我继承了一些我需要调试的代码。它目前无效。我的任务是让它发挥作用。没有给我任何其他要求。不,这不是家庭作业,这是一项维护噩梦般的工作。

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有效,这就是我们遇到问题的原因吗?

2 个答案:

答案 0 :(得分:0)

谷歌搜索

  

jquery ajax submit

显示jQuery Form Plugin。鉴于此,您的页面上是否包含其他代码可以访问该方法的文件?此代码是否适用于Firefox而不是IE?

答案 1 :(得分:0)

似乎有太多的jQuery乐趣在继续。我完全重写了整个代码块,因为它首先设计得很糟糕。