我需要使用dataFilter从validate插件返回的json字符串的开头删除'//',我遇到了一些问题让它工作。我的代码的相关部分是:
$(document).ready(function () {
$.ajaxSetup({
dataFilter: function(data, type){
return type == 'json' ? data.replace(/^(\/{2})?/, '') : data;
}
});
$("#myForm").validate({
rules: {
cgroup :{
required: true,
remote: {
url: compath + "/v.cfc?method=queryRemote&returnformat=json",
type: "post"
}
}
其他规则和消息已被截断。
由于切换到Coldfusion 10,现在将JSON作为前两个字符添加安全字符串(//),我需要在响应端修复此问题。
我不确定我的错误是在ajaxSetup中还是在使用validate()或正则表达式本身时。
控制台现在出现错误。在查看Fiddler中的响应数据时,如果我在较新的服务器上访问CFC,则会看到预期的// true或// false;如果我在不预先挂起/的服务器上发布到CFC,则返回true或false / characters。
但是我没有看到$ .ajaxSetup()正在做任何事情的迹象。
ANSWER:jquery.validate()打破了ajaxSetup()。解决方案是将datafilter向下移动到远程部分:
cgroup :{
required: true,
remote: {
url: compath + "/v.cfc?method=queryRemote&returnformat=json",
type: "post",
dataFilter: function(data, type){
return type == 'json' ? data.replace(/^(\/{2})?/, '') : data;
}
}
}