我想使用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)
数据应包含您在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)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |