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

标签 c# jquery

我想使用 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/

相关文章:

javascript - 当输入具有相同名称时如何获取表单属性

jquery - 为什么标签内容总是在 materializecss 中可见

C# 将字符串格式化为日期

c# - ConcurrentQueue 持有对象的引用或值? "out of memory"异常

c# - DateTime.MaxValue 在 mysql 中保存为零

c# - 是否有可能保存 scorm 内容的所有书签并在下一次登录 session 中重复使用?

javascript - 如果内容更改为默认值,请更改文本字段输入样式

javascript - 识别在表格内单击了哪个按钮

javascript - .change 函数的多个输入

c# - .Net Core 忽略环境变量 DOTNET_SKIP_FIRST_TIME_EXPERIENCE