2013-03-30 93 views
0

我想通過點擊代碼隱藏文件中的一些標籤爲jQuery.ajax aspx調用SendInfo方法。但是所有時間都會出現'錯誤'部分,而不是成功,並且字符串不是從方法返回的。jQuery Ajax和WebMethod調用

請告訴我,請問我在這裏做錯了什麼?

剛開始學習ajax。

的Index.aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<script type='text/javascript' src='../../Scripts/jquery-1.4.1.min.js'></script> 
<script type="text/javascript" > 
    $(document).ready(function() { 
     $("#Result").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "Index.aspx/SendInfo", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#Result").text(msg.d); 
       }, 
       error: function() { 
        $("#Result").text("adas"); 
       } 
      }); 
     }); 
    }); 
</script> 
<div id="Result">Click here for the time.</div> 
</asp:Content> 

代碼隱藏文件:

public class Index : ViewPage 
{ 
    [WebMethod] 
    public static string SendInfo() 
    { 
     return "Info actually sended"; 
    } 
} 

回答

0

快速瀏覽我想說這可能是由於在 「數據類型」 參數設置爲 「JSON」 來。正如這告訴它你期待返回一個JSON對象,所以它會嘗試解析這個響應,並因爲它是純文本而失敗。

你可以完全刪除「dataType」參數(也是空的「data」之一),jQuery將冒險猜測返回的內容,並且在這種情況下應該正確地預測響應是純文本。

您可能還需要指定AJAX位置的完全限定URL,並將成功函數中的「msg.d」更改爲「msg」,但這取決於服務器上設置的特定選項( 「.d」是Microsoft推出的一項安全功能)。

+0

這些都不會幫助 – user2227145

+0

確定,將錯誤函數簽名更改爲「error:function(jqXHR,status,error)」,在錯誤函數內粘貼一個斷點並調試腳本以查看狀態和錯誤返回值是。這可能會讓您更深入地瞭解問題。 – TheManWithNoName

+0

狀態:錯誤;錯誤:未定義。實際上是 – user2227145