jQuery验证程序#使用ASP.NET WebForms远程

jQuery验证程序#使用ASP.NET WebForms远程,jquery,webforms,Jquery,Webforms,我正在尝试将jQuery验证程序插件用于WebForms。以下是我的jQuery代码: $("input[id$=FromZip]").rules('add', { required: true, postalCode: true, remote: { url: "shipping companies.aspx/ValidatePostalCode", type: "POST", contentTyp

我正在尝试将jQuery验证程序插件用于WebForms。以下是我的jQuery代码:

$("input[id$=FromZip]").rules('add', {
    required: true,
    postalCode: true,
    remote: {
            url: "shipping companies.aspx/ValidatePostalCode",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: 'json',
            data: "{'postalCodeToValidate': '" + $("input[id$=FromZip]").val() + "'}",
            dataFilter: function(data) { return (JSON.parse(data)).d; }
    },
    messages: {
        required: '"From" zip code is required.',
        postalCode: 'Invalid "From" zip code',
        remote: 'The "From" zip code was not found in the database.'
    }
});
问题是
val()
总是返回空值,因此该值总是被标记为false。我尝试将其包装在函数调用中,如下所示:

remote: function() {
    var r = { 
        url: "shipping companies.aspx/ValidatePostalCode",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        async: false,
        data: "{'postalCodeToValidate': '" + $("input[id$=FromZip]").val() + "'}",
        dataFilter: function(data) { return (JSON.parse(data)).d; }
    }
}
除此之外,现在根本没有调用WebMethod,也没有发出Ajax请求,而之前(没有
var r={}
stuff)进行了调用,但传递的是空数据,而不是文本框中的值。我一天中大部分时间都在想这个问题


有什么建议吗?

您可以这样编写远程功能

   remote: function() {
      var value = $('#FromZip').val();
      var r = {
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ 'postalCodeToValidate': value }),
            type: 'POST',
            dataType: 'json',
            url: 'shipping companies.aspx/ValidatePostalCode',
            dataFilter: function(data) { return $.parseJSON(data).d; }
      };
      return r;
   }

因此,我似乎通过创建一个自定义方法而不是使用remote部分解决了这个问题,但现在它将字段标记为无效,即使我从服务器返回的响应是:{“d”:“true”}。即使在自定义方法中硬编码“True”值,也会将字段标记为无效!我可以通过创建一个变量来修复它,在success方法处理程序中分配该变量,然后检查Ajax调用之外的值。奇怪的是,几乎可以肯定有更好的方法来处理它,但它已经解决了。同样的问题也发生在我身上,我改为使用自定义方法而不是远程方法。这个自定义方法的一个缺点是您可能需要将ajax调用设置为async:false,否则验证器将始终显示false。这就是我的想法