我想使用 jQuery 调用名为 c.ashx 的 C# Web 服务,该服务检查该用户名是否有效并以字符串形式返回错误消息。
如果 c# webservice 的返回值是字符串值,我应该为 data: 和 content type: 添加什么内容?
jQuery.ajax({
type: "GET",
url: "/services/CheckUserName.ashx",
data: "",
contenttype: "",
success: function (msg) {
alert("success");
},
error: function (msg, text) {
alert(text);
}
});
我已经创建了一个 .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);
}
});
});
最佳答案
数据应包含您在 Web 服务中调用的方法的参数。然而,ashx 扩展是针对 HTTP Handler 的,对于这种情况来说这不是一个好的选择。应改用 Web 服务。
因此,如果您调用 /services/LoginServices.asmx?CheckUserName
,并且 CheckUserName.asmx 有一个 Web 方法 ValidateUser
,例如
public string ValidateUser(string username)
那么 jQuery 的 data
属性将是
data: '{ "username": "' + usernameValue + '"}'
你的contentType
应该是application/json; charset=utf-8
,并且 dataType
应为 "json"
。
请注意,您不会调用 /services/CheckUserName.asmx
,Web 服务中的方法名称必须附加到 Web 服务 URL,/services/LoginServices.asmx?CheckUserName
.
此外,您还需要将类型
更改为“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);
}});
希望这有帮助
关于c# - 如何使用jQuery调用c# webservice获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897731/