代码之家  ›  专栏  ›  技术社区  ›  Matt Dawdy

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

  •  0
  • Matt Dawdy  · 技术社区  · 15 年前

    我继承了一些需要调试的代码。它现在不工作。我的任务是让它工作。没有给我其他要求。不,这不是家庭作业,这是维护工作的噩梦。

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

    2 回复  |  直到 9 年前
        1
  •  0
  •   justkt    15 年前

    谷歌搜索

    jquery ajax提交

    揭示 jQuery Form Plugin . 考虑到这一点,您的页面中是否包含其他代码可以访问该方法的文件?这段代码在firefox而不是ie中有效吗?

        2
  •  0
  •   Matt Dawdy    15 年前

    似乎jquery的乐趣太多了。我完全重写了整个代码块,因为它一开始设计得很差。