如何使用jQuery调用c#webservice来获取返回值

The*_*max 2 c# jquery

我想使用jQuery调用名为c.ashx的ac #web服务,该服务检查该用户名是否有效并以字符串形式返回错误消息.

我应该为数据添加什么:和内容类型:如果c#webservice的返回值是字符串值?

 jQuery.ajax({
 type: "GET",
 url: "/services/CheckUserName.ashx",
 data: "",
 contenttype: "",

 success: function (msg) {
     alert("success");

 },
 error: function (msg, text) {
     alert(text);
 }
 });
Run Code Online (Sandbox Code Playgroud)

我改为创建了一个.asmx文件,但它不会被jQuery调用.以下是否正确?

jQuery.validator.addMethod("UsernameCheck", function (value, element) {
    jQuery.ajax({
        type: "POST",
        url: "/services/CheckUsername.asmx?CheckUsername",
        data: '{ "context": "' + jQuery("#username").value + '"}',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',

        success: function (msg) {
            alert("success");

        },
        error: function (msg, text) {
            alert(text);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Jef*_*her 5

数据应包含您在Web服务中调用的方法的参数.但是,ashx扩展名适用于HTTP处理程序,对于此方案而言,这不是一个好的选择.应该使用Web服务.

所以,如果你正在调用/services/LoginServices.asmx?CheckUserName,CheckUserName.asmx有一个web方法ValidateUser,如

public string ValidateUser(string username)
Run Code Online (Sandbox Code Playgroud)

那么datajQuery 的属性就是

data: '{ "username": "' + usernameValue + '"}'
Run Code Online (Sandbox Code Playgroud)

你的contentType应该是application/json; charset=utf-8,dataType应该是"json".

请注意,您不打算调用/services/CheckUserName.asmx,Web服务中方法的名称必须附加到webservice url , /services/LoginServices.asmx?CheckUserName.

此外,您需要将您更改type"POST".

这是一个完整的例子:

$.ajax({
type: 'POST',
url: 'LoginServices.asmx/CheckUserName',
data: '{"username": "' + usernameValue + '"}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(msg) {
    alert("Result: " + msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert("Error: " + textStatus);
}});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助