我希望使用jQuery调用名为c.ashx的c# web服务,该服务检查用户名是否有效,并将错误消息作为字符串返回。
如果c# webservice的返回值是一个字符串值,那么数据:和内容类型应该放什么?
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);
}
});
});发布于 2010-05-24 15:42:49
数据应该包含在web服务中调用的方法的参数。但是,ashx扩展是针对Handler的,对于这个场景来说,这不是一个好的选择。web服务应该通过使用来代替。
因此,如果您正在调用/services/LoginServices.asmx?CheckUserName,而CheckUserName.asmx有一个webmethod ValidateUser,如
public string ValidateUser(string username)那么,用于data的jQuery属性将是
data: '{ "username": "' + usernameValue + '"}'您的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);
}});希望这能有所帮助
发布于 2010-05-26 08:05:54
jQuery代码没有工作,因为它没有调用webservice。我通过创建一个HTTP处理程序类并将用户名传递给它来修正这个问题。我将data的值更改为以下内容,并传递用户输入的用户名:
data: "username=" + jQuery("#username").val(),https://stackoverflow.com/questions/2897731
复制相似问题