2010-11-17 96 views
1

我一直在試圖從jQuery AJAX訪問.NET WebMethod,但是我無法讓它工作。我已經閱讀了所有可以在SO和其他網站上找到的所有內容,而且似乎沒有任何工作。AJAX WebMethod幫助

我的C#代碼是這樣

[WebMethod] 
public static string TestAjax() 
{ 
    return "Hello World"; 
} 

和JavaScript代碼是

$.ajax({ 
    type: "POST", 
    url: "ManageEvent.aspx/TestAjax", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) 
    { 
     alert(msg.d); 
    }, 
    error: function(result) 
    { 
     alert("error: " + result.status); 
    } 
}); 

最終目標是做一個表單提交使用AJAX數據庫無需重新加載整個頁面,但在我什至不能讓它返回一個字符串。當我點擊這個代碼所附的輸入按鈕時,錯誤代碼被稱爲狀態12030.但是,當我在Visual Studio之外測試代碼時,我仍然錯誤,但狀態爲200.是否有任何明顯的顯示會導致此錯誤的代碼?

由於一噸

編輯:

我已通過安裝ASP.NET AJAX 1.0,並呼籲在我的javascript得到將WebMethod使用ASP.NET AJAX的ScriptManager的工作

PageMethods.TextAjax(OnSuccess, OnFail); 

其中的onSuccess和OnFail是功能。但是我仍然無法讓jQuery的AJAX工作。它仍然會拋出12030錯誤狀態。

+0

您能不能告訴你的web.config?你可能會缺少值 – Anthony 2011-06-22 15:26:11

回答

0

Web服務是缺少[ScriptService]標籤,它固定它安裝ASP.NET AJAX

1

我看不出你的代碼有什麼問題。安裝FireBug並查看您的設置問題在哪裏。這是一個完整的工作示例:

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Web.Services" %> 

<script type="text/C#" runat="server"> 
    [WebMethod] 
    public static string TestAjax() 
    { 
     return "Hello World"; 
    } 
</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head id="Head1" runat="server"> 
    <title></title> 
    <script type="text/javascript" src="scripts/jquery-1.4.1.js"></script> 
    <script type="text/javascript"> 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/TestAjax", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       alert(msg.d); 
      }, 
      error: function (result) { 
       alert("error: " + result.status); 
      } 
     }); 
    </script> 
</head> 
<body> 
    <form id="Form1" runat="server"> 
    </form> 
</body> 
</html> 
+0

當我在VS中運行這個時,我得到了像以前一樣的「error:12030」。這讓我相信這可能是一個配置問題。在web.config中需要做些什麼才能使這種類型的Ajax正常工作?我有Ajax以ashx處理程序的形式在其他地方工作,但我在這裏要做的功能在頁面方法中會更好。 – rpf3 2010-11-17 16:27:14

+0

在Chrome中使用JS控制檯我注意到,如果我刪除了json contentType和dataType,則響應是整個Default.aspx頁面,而不是我從中調用JS的頁面。 – rpf3 2010-11-17 16:43:55

0

這一切看起來都正確。請問您的類是這樣的:

public partial class _Default : Page 
{ 
[WebMethod] 
public static string TestAjax() 
{ 
    return "Hello World"; 
} 

} 
+0

或多或少,標題是「public partial class ManageEvent:System.Web.UI.Page」 – rpf3 2010-11-17 16:22:59

+0

我會在其他地方看看。你有什麼工作了嗎? – wajiw 2010-11-17 16:27:18

+0

還沒有。即使當我逐步使用調試器時,我也會在C#方法上放置一個斷點,並且它似乎從未達到過。 – rpf3 2010-11-17 16:31:09