用于检查数据库数据的jquery ajax调用总是返回一个错误-.NET

用于检查数据库数据的jquery ajax调用总是返回一个错误-.NET,jquery,ajax,asp.net-ajax,Jquery,Ajax,Asp.net Ajax,我正在开发一项功能,用户可以通过该功能检查数据库(注册页面)中是否已经存在电子邮件 基本上出于测试目的,我添加了一个电子邮件地址为'test@yopmail.com'在数据库中手动执行 我正在尝试通过ajax检查此电子邮件是否存在。以下是我正在使用的代码: [WebMethod(MessageName = "CheckEmailAvailability", Description = "Check whether an Email is available.")] public

我正在开发一项功能,用户可以通过该功能检查数据库(注册页面)中是否已经存在电子邮件

基本上出于测试目的,我添加了一个电子邮件地址为'test@yopmail.com'在数据库中手动执行

我正在尝试通过ajax检查此电子邮件是否存在。以下是我正在使用的代码:

    [WebMethod(MessageName = "CheckEmailAvailability", Description = "Check whether an Email is available.")]
    public string CheckEmailAvailability(string email)
    {
        var checkEmailAvailabilityResult = string.Empty;

        try
        {
            var membershipUser = Membership.GetUserNameByEmail(email);

            if (!string.IsNullOrWhiteSpace(membershipUser))
            {
                checkEmailAvailabilityResult = "EMAIL_ALREADY_EXIST";
            }
            else
            {
                checkEmailAvailabilityResult = "EMAIL_NOT_EXIST";
            }
        }
        catch (Exception ex)
        {
            checkEmailAvailabilityResult = "UNEXPECTED_ERROR";
        }

        return checkEmailAvailabilityResult;
    }

    #endregion
我的ajax是:

  $('#test_json').click(function(){

  $.ajax({
    type: "POST",
    url: "http://locahost/WebServices/Email_Availability/Email_Availability_V1_1.asmx/CheckEmailAvailability",
    data: { email: JSON.stringify('test@yopmail.com')},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){

        alert('data');

    },
     error: function(data){ alert('Test'+data); }
  });
 });
正在警告以下内容:测试[对象]


我做错了什么?请帮助

您不需要对字符串值使用JSON.stringify

data: { email: JSON.stringify('test@yopmail.com')},
换成

data: { email: 'test@yopmail.com'},
为了正确地打印出错误发生的情况,您需要更改错误函数的参数。您的第一个参数是xhr对象,您可能希望检查第二个和第三个参数以查看失败的地方

类型:函数(jqXHR jqXHR、字符串textStatus、字符串ERRORSHORN)


从jQuery文档中:

修复键入loca主机,不要将
字符串
对象
连接起来:

 $('#test_json').click(function(){

  $.ajax({
    type: "POST",
    url: "http://localhost/WebServices/Email_Availability/Email_Availability_V1_1.asmx/CheckEmailAvailability",
    data: { email: JSON.stringify('test@yopmail.com')},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){

        alert('data');

    },
     error: function(data){ alert(data); }
  });
 });

错误处理程序并不真正返回数据,它有三个与错误相关的参数,读取文档。控制台记录这三个参数,并告诉我们它们说了什么,因为您显然遇到了错误处理程序。服务器端脚本错误或网络错误,请检查您的网络选项卡我在我的网络面板中获得以下内容:选项CheckEmailAvailability Aborted尝试访问跨域资源时调用选项HTTP方法。HTML页面和web服务是否在同一个web服务器上运行?我得到了相同的结果:Test[object]