検証プラグインから返された json 文字列の先頭から '//' を削除するには、dataFilter を使用する必要があります。私のコードの関連部分は次のとおりです。
$(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 に切り替えてから、最初の 2 文字としてセキュリティ文字列 (//) を JSON の先頭に追加するようになったため、応答側でこれを修正する必要があります。
エラーが ajaxSetup にあるのか、validate() または正規表現自体でそれを使用するのかはわかりません。
コンソールにエラーが表示されるようになりました。Fiddler で応答データを見ると、新しいサーバーの CFC にアクセスすると //true または //false が期待され、/ を前に保留しないサーバーの CFC に投稿すると true または false が表示されます。 / 文字。
ただし、 $.ajaxSetup() が何かをしていることを示す兆候はまったくありません。
回答: 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;
}
}
}