下面的脚本运行良好,但今天我遇到了一个我认为是由转义的JSON引起的场景。
正如您在下面的代码中看到的那样,我使用远程验证按要求以JSON格式返回错误消息。
在返回的特定错误消息中,看起来没有显示: {"有效":false,"错误":" XDMP-BADCHAR :(错误:XPST0003)发现了意外的字符' \&# 34;' (0x0022)"}
我怀疑是由于双重报价(以粗体显示)。
我怀疑这是因为看起来像这样的类似错误消息显示正常: {"有效":false,"错误":" XDMP-BADCHAR :(错误:XPST0003)发现了意外的字符'''' (0x0027)"}
我试图进一步逃避事情,但无济于事。任何建议都将不胜感激。
CODE:
$(document).ready(function(){
$('#form-validate').validate();
$("[name^=customfields]").each(function(){
$(this).rules("add", {
remote: {
type: "GET",
url: "/xpath-evaluator.xqy",
dataType: "json",
dataFilter: function(data) {
var json = JSON.parse(data);
if (json.valid != false) {
return true;
}
else {return "\"" + json.error.split(')')[1] + "\"";}
}
}
});
});
});
答案 0 :(得分:1)
由于我无法更改回来的远程响应,因此我使用了replace来逃避它遇到问题的角色,在这种情况下,它是'\“',如下面的错误所示:
{“valid”:false,“error”:“XDMP-BADCHAR :(错误:XPST0003)发现意外的字符'\”'(0x0022)“}
这是更新后的Javascript,显示了我是如何做到的:
$(document).ready(function(){
$('#form-validate').validate();
$("[name^=customfields]").each(function(){
$(this).rules("add", {
remote: {
type: "GET",
url: "/xpath-evaluator.xqy",
dataType: "json",
dataFilter: function(data) {
var json = JSON.parse(data);
if (json.valid != false) {
return true;
}
else {
var jerror = json.error.split(')')[1]
return '\"' + jerror.replace('\"', '\\"') + '\"'}
}
}
});
});
});
感谢Sippy的评论并让我走上正确的道路来解决这个问题。希望将来帮助其他人。