2016-08-27 6 views
0

У меня есть код JQuery AJAX, который вызывает метод веб-службы ASP.NET с подписями: "public bool ValidateUser (имя пользователя строки, строковый пароль)" Он должен return 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', потому что, когда этот код будет развернут для производства, он больше не будет работать. U может изменить его на:

url: 'StockServices.asmx/ValidateUser'

0

Я заметил, что в вашем АЯКСЕ вызова, вы используете:

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

Вы должны попробовать:

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

Я нашел нижеследующий фрагмент от this link

тип (по умолчанию: 'GET')

Тип: Строка Алиас для метода. Вы должны использовать тип , если вы используете версии jQuery до 1.9.0.

Может быть, что вы используете старую версию JQuery, которая не принимает method но принимает type?

Смежные вопросы