2011-05-02 108 views
0

這個問題有點遠,但我會試一試。jQuery Post不能正常工作

我想在我的asp.net網站中使用jQuery的ajax後,但它不工作。

,我試圖代碼的最簡單的版本是:

$("#divTest").click(function() 
{ 
     $.ajax({ type: "POST", url: "WebForm1.aspx" }); 
}); 

更多的事實是:

  • 我使用asp.net 4.0和Windows Server上的IIS 7.5 2008年

  • 當我創建一個新的Web應用程序並測試相同的代碼時,它工作得很好。

  • 調試時,我發現Page_Init事件沒有按照預期觸發請求。

  • 在FireBug中,我可以看到請求被髮送到頁面,但響應爲空(內容長度爲0)。

  • 它在FF,Chrome和IE上測試了這個。

  • 將類型替換爲「GET」時,它工作正常。

什麼可能導致此問題?

編輯:

我現在,假如我ValidateRequest = 「假」的頁面,問題就解決了發現。

什麼可能導致發佈請求無法通過驗證,因爲它顯然是這樣做的?然後可以做什麼,然後將ValidateRequest設置爲false?

+0

如果您使用的是簡單的例子,並且不發送任何數據,不會受空,每次的反應如何? WebForm1.aspx應該看起來像什麼? – 2011-05-02 17:00:15

+0

只要你不需要複雜的ajax文章,我建議使用簡短的'$ .post();' – Zlatev 2011-05-02 17:08:06

+0

因爲你沒有發佈任何數據,這實際上可能是一個GET請求。在FF的NET選項卡中,您在URL的右側看到了哪種方法? – Craig 2011-05-02 17:18:34

回答

0

我假設你正在發送的形式,如果這樣你就必須將數據發送到數據使用屬性,就像這樣:

$("#divTest").click(function() 
{ 
     var sdata = $('myform').serialize(); 
     $.ajax({ type: "POST", url: "WebForm1.aspx", data : sdata }); 
}); 

然後用螢火響應檢查。

0

嘗試添加數據選項...

$("#divTest").click(function() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "WebForm1.aspx", 
     data: {} 
    }); 
}); 
+0

恐怕沒有改變這種情況。 – Kuzco 2011-05-02 18:08:37

+0

@Kuzco你提到,當你創建一個新的Web應用程序時,代碼可以按預期工作。你能否確認在其他應用程序中沒有URL重寫?例如,如果您有一個重寫模塊將所有URL更改爲小寫(可能幫助進行統計報告...我們所做的一些事情),然後將它們重定向到小寫版本/webform1.aspx,則它將成爲GET請求,並且你會失去你的POST變量。我假設你可能不太熟悉整個應用程序....對不起,如果不是這樣的話。 – Craig 2011-05-02 23:32:19

+0

@Kuzco簡而言之,如果您尚未這樣做,請在相關頁面的OnLoad事件中設置一個斷點,並檢查this.IsPostBack的值並檢查this.Request.Form&this.Request.QueryString對象。 – Craig 2011-05-02 23:33:43