2010-04-22 38 views
0

我已經繼承了一些我需要調試的代碼。目前沒有工作。我的任務是讓它工作。沒有其他要求給我。不,這不是家庭作業,這是一個維護噩夢的工作。ajax提交和其他代碼。有人能幫我確定這個代碼在做什麼嗎?

ASP.Net(Framework 3.5),C#,jQuery 1.4.2。這個項目大量使用jQuery和AJAX。在頁面上有一個下拉菜單,當選擇一個項目時,應該將該項目(它是一個用戶)添加到數據庫中的一個對象。

爲了實現這一點,以前的程序員首先在頁面加載時通過AJAX動態加載整個頁面。要做到這一點,他有5個div,每個從jQuery調用加載到網站中的不同完整頁面。

不知何故,HTML和BODY以及所有其他東西都被剝離出來,div的內容加載了aspx頁面的內容。這對我來說似乎非常錯誤,因爲它依賴於瀏覽器來魔術般地去除HTML,頭部,身體,表單標籤並與現有的HTML頭部身體表單標籤合併。

此外,作爲「內容」頁面返回一個字符串,以前的程序員有這種代碼在其上運行之前,它被添加到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

似乎有太多的jQuery樂趣。我完全重寫了整個代碼塊,因爲它首先設計得不好。

0

谷歌搜索

jquery ajax submit

揭示了jQuery Form Plugin。鑑於此,該文件是否包含在您的頁面上,其他代碼將訪問該方法?此代碼是否在Firefox中工作,而不是IE?

+0

好的建議。是的,它包含在內,不,它在Firefox中也不起作用。 Firefox中的錯誤是「$(form).ajaxSubmit不是函數」。我甚至剛剛下載了最新版本的腳本,以確保前面的人沒有改變它或任何東西。 – 2010-04-22 19:04:26

相關問題