2016-08-27 57 views
0

我有這個JQuery AJAX代碼調用帶簽名的ASP.NET Web服務方法: 「public bool ValidateUser(string username,string password)」 它應該返回true/false。 AJAX拋出沒有錯誤,但不起作用。JQuery AJAX拋出沒有錯誤,但不起作用

<script> 
     $('#btn').click(function() { 
       var a=$('#name').val(), b=$('#pass').val(); 
       $.ajax({ 
        url:'http://localhost:22664/StockServices.asmx/ValidateUser', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify({ username: a, password: b }), 
        dataType: "json", 
        method: 'post', 
        success: function (data) { 

         alert("Msg: " + data.d); 

        }, error: function (err) { alert("failed"); 
        console.log(err); } 
       }); 
      }); 
    </script> 
+0

控制檯顯示什麼? –

+0

你是什麼意思不起作用如此之好? – loneshark99

+0

控制檯是空白的...這就是我說...拋出沒有錯誤 – Jerry

回答

0

爲了使您的.asmx服務被稱爲從JavaScript您需要將此屬性添加到.asmx服務定義:

[System.Web.Script.Services.ScriptService] 

所以你的完整的服務可能是這個樣子:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
[System.Web.Script.Services.ScriptService] 
public class StockServices : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public bool ValidateUser(string username,string password) 
    { 
     System.Diagnostics.Debugger.Break(); 
     return true; 
    } 
} 

還要小心使用url:'http://localhost:22664/StockServices.asmx/ValidateUser',因爲當此代碼部署到生產時,它將不再工作。 ü可能想將其改爲:

url: 'StockServices.asmx/ValidateUser'

0

我注意到,在您的Ajax調用,您使用的是:

$.ajax({ 
    ... 
    method: 'post', 
    ... 
}); 

你應該嘗試:

$.ajax({ 
    ... 
    type: 'post', 
    ... 
}); 

我找到了以下片段來自this link

類型(默認值:'GET')

類型:字符串方法的別名。如果您使用1.9.0之前版本的jQuery,則應該使用 類型。

難道是你使用的舊版本的jQuery不接受method,但接受type

相關問題