2010-05-25 80 views
1

我想使用jQuery.ajax()調用webservice,但webervice不會被調用。 - 如果我更改網址:引用.ashx文件,它會被調用,但不是.asmx?webservice不會被jQuery調用

下面是我使用的代碼:

jQuery.ajax({ 
     type: "POST", 
     url: "/services/CheckUsername.asmx/CheckUsername", // this doesn't get called 
     //url: "/services/CheckUsername.ashx/ProcessRequest", this gets called 
     data: '{ "context": "' + "username" + '"}', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 

     success: function (msg) { 
      alert("Result: " + msg); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error: " + textStatus) 
     } 

的ashx的文件被調用但parsererror被重新調校,因爲它返回HTTP上下文 - 我怎麼能修改此從Web服務得到一個字符串返回類型?

感謝,

回答

2

嘗試屬性設置[ScriptMethod]到您的服務器端方法

+0

感謝您的回覆,Elangovan。我不知道該把[ScriptMethod]放在哪​​裏 - 你的意思是把它添加到方法之上的webservice c#代碼中?即[WebMethod]在方法名稱之上。 – Theomax 2010-05-25 10:46:55

+0

我用下面的線程作爲參考:http://stackoverflow.com/questions/1791088/asp-net-scriptmethod-generating-empty-json並添加了[ScriptMethod(ResponseFormat = ResponseFormat.Json)]但VS沒有認識到它是正確的語法? – Theomax 2010-05-25 10:49:46

+0

它應該像[ScriptMethod] 語法正確一樣添加,但在您的asmx文件中引用名稱空間System.Web.Script.Services。 – Elangovan 2010-05-25 10:56:20

1

我發現瞭如何通過用戶的HTTP處理程序輸入的用戶名。這裏的jQuery代碼:

jQuery.validator.addMethod("UsernameCheck", function (value, element) { 
     var allowed = true; 
     jQuery.ajax({ 
      url: "/services/UsernameCheck.ashx", 
      global: false, 
      cache: false, 
      type: "get", 
      data: "profile_name=" + jQuery("#username").val(), 
      dataType: "text", 
      success: function (msg) { 
       if (msg == 1) { 
        allowed = true; 
       } 
       else { 
        allowed = false; 
       } 
      } 
     }); 
     return allowed; 
    }, "Please enter a valid username");