2013-04-18 59 views
6

我有這個小問題... 我有這個asp.net網站。 我有一個菜單,全部用html和css完成。 所以當我點擊home時,ajax會將其他內容加載到指定的div元素中。 工作100%。jQuery AJAX和ASP.NET

在加載到div元素的內容中,我有一個按鈕。一個ASP.NET按鈕。

當我按一下按鈕,它給了我一個「的資源不能被發現。」錯誤。

必須有我丟失的東西。如果你不明白,繼承人的AJAX:

//Load the Home page on click. 
$(document).ready(function() { 
    $('.home').click(function() { 
     $("#content").load("html/home/home.aspx"); 
    }); 
}); 

現在被加載到內容DIV aspx頁面,會顯示一個按鈕,btnAdd:

<asp:Panel ID="pnlAddNewBlog" runat="server"> 
    <asp:TextBox ID="txtAddNewBlog" runat="server" TextMode="MultiLine"></asp:TextBox> 
    <br /> 
    <asp:Button ID="btnAdd" runat="server" Text="Add" /> 
</asp:Panel> 

當我點擊該按鈕,誤差出現。

我想實現的是:當用戶點擊該按鈕,在txtAddNewBlog文本被添加到數據庫中。現在我可以使用C#實現這個功能了......但是如果這個錯誤出現在我的方式中,則不會。有任何想法嗎?

+0

是否存在'html/home/home.aspx'?嘗試查看瀏覽器發送的網絡請求。導航到該URL以確保其存在。 – Danny

+0

是的,它存在,因爲ajax將home.aspx中的所有內容加載到#content中,我可以看到它。但是當我點擊底部時。這工作時,我沒有ajax加載內容...但是當ajax進來時,它不再工作 –

+1

是否##內容放在一些其他形式?如果是,那麼當你加載其他頁面時,你會破壞html結構。 – Aristos

回答

1

的問題將是時生成的form。當你提出這個請求時,ASP.NET將建立一個目標爲home.aspx的表單,而不是完整的路徑。但是您將該表單轉儲到不同級別的HTML頁面上。

當你做一個表單發佈時,它會嘗試發佈到home.aspx,相對於瀏覽器認爲它的地方,這是兩個級別,並且它沒有找到它。

我不知道是否有這樣做的好方法 - ASP.NET並不意味着來處理這種事情。你可以做一個IFRAME。您可以將home.aspx內容包裝到用戶控件中,並將ASP.NET窗體保留在外部頁面上。或者您可以操縱表單的目標,以便發佈到正確的位置。但是我不認爲其中的任何一個會很有趣。

+0

所以是更好地創建webforms和只是「Response.Redirect」他們並重新加載整個頁面? –

+0

我認爲,對於目前的體系結構,最好的辦法是實際重定向而不是AJAX,如果它。用戶必須處理頁面重新加載,但大多數網絡仍然以這種方式工作。如果你想避免這種情況,我建議在沒有ASP.NET WebForms頁面生命週期的情況下構建一個解決方案 - 單頁面應用程序通常是JavaScript密集型的,所以這個架構與傳統的WebForms應用程序會有很大的不同。您的服務器代碼可以處理構建傳統標記和帖子,留下用於客戶端代碼的導航。 –