使用远程将空数据发布到webservice的JQuery验证
我正在使用JQuery验证插件。我正在使用远程选项调用我的Web服务,以检查是否存在公司名称。webservice只接受JSON数据 我以如下形式将数据从公司输入字段传递到Web服务: 数据:“{'company':'”+$('#company').val()+“}” 但这总是为company返回一个空值,因此响应为{'company':''},即正确的JSON,但缺少company输入字段值 有人能解释一下为什么我总是得到一个空值吗 谢谢你的帮助, Ciaran试试这个:使用远程将空数据发布到webservice的JQuery验证,jquery,json,validation,plugins,Jquery,Json,Validation,Plugins,我正在使用JQuery验证插件。我正在使用远程选项调用我的Web服务,以检查是否存在公司名称。webservice只接受JSON数据 我以如下形式将数据从公司输入字段传递到Web服务: 数据:“{'company':'”+$('#company').val()+“}” 但这总是为company返回一个空值,因此响应为{'company':''},即正确的JSON,但缺少company输入字段值 有人能解释一下为什么我总是得到一个空值吗 谢谢你的帮助, Ciaran试试这个: data: {
data: {
company: $('#Company').val(),
param: 1 //Second paramenter
//you can keep adding parameters folloiwng the format
}
data: function() { return "{'company': '" + $('#Company').val() + "'}"; }
原因是
数据:“{'company':'”+$('#company').val()+“}”
在页面加载时计算,而不是在进行远程调用时计算
尝试以下方式声明规则:
remote: function() {
var r = {
url: "webservice.asmx",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{'company': '" + $('#Company').val() + "'}"
dataFilter: function(data) { return (JSON.parse(data)).d; }
}
return r;
}
如果您使用的是ASP.NETWebService,则需要使用dataFilter,因为响应将位于json对象的名为“d”的属性中。需要JSON库
“{d:“true”}”
试试这个:
data: {
company: $('#Company').val(),
param: 1 //Second paramenter
//you can keep adding parameters folloiwng the format
}
data: function() { return "{'company': '" + $('#Company').val() + "'}"; }
或者更好的方式:
company: function() {return $('#Company').val();}
这对我很有效嗨,巴勃罗,谢谢你的回复。这可以将值返回给我,但格式是错误的,因为它是一个querystring而不是JSON,即Company=test而不是{Company:test}。我想知道这是否是验证插件的错误?Wierd,您在哪里看到这个Company=test?在PHP中解析json字符串之后?如果使用json_decode(),它应该返回一个关联数组,比如[comapany]=>“test”、[param]=>1Hi Pablo,我使用Firebug来调试它。如果我按照您的建议设置数据参数,那么它将使用值进行URL编码。如果我按照我最初的建议设置它,它是json编码的,但没有设置值。我同意这是验证插件的奇怪行为。我正在探索使用ASP.NET MVC的途径,因此我认为这不会是一个问题,因为我可以使用在控制器中返回JSONResult的操作方法返回json数据。您应该发布更多的$.ajax请求代码,并解释您使用的web服务类型。也许你的问题就要解决了?我发布了一些不同版本的$.ajax请求作为答案,以从不同的角度显示问题。