Javascript JQuery表单验证:存在转义JSON时不显示错误消息
下面的脚本工作得很好,但今天我遇到了一个我认为是由转义JSON引起的场景 正如您将在下面的代码中看到的,我正在使用远程验证根据需要以JSON格式返回错误消息 返回的On-particulr错误消息似乎未显示: {“valid”:false,“error”:“XDMP-BADCHAR:(errr:XPST0003)发现意外字符“\”(0x0022)} 我的怀疑是,这是由于逃逸的双引号(在上面粗体) 我怀疑这是因为类似的错误消息显示得很好:{“valid”:false,“error”:“XDMP-BADCHAR:(err:XPST0003)找到了意外字符“”(0x0027)} 我试图进一步逃避,但无济于事。任何建议都将不胜感激 代码:Javascript JQuery表单验证:存在转义JSON时不显示错误消息,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,下面的脚本工作得很好,但今天我遇到了一个我认为是由转义JSON引起的场景 正如您将在下面的代码中看到的,我正在使用远程验证根据需要以JSON格式返回错误消息 返回的On-particulr错误消息似乎未显示: {“valid”:false,“error”:“XDMP-BADCHAR:(errr:XPST0003)发现意外字符“\”(0x0022)} 我的怀疑是,这是由于逃逸的双引号(在上面粗体) 我怀疑这是因为类似的错误消息显示得很好:{“valid”:false,“error”:“XDMP-B
由于我无法更改返回的远程响应,因此我使用replace来转义它遇到问题的字符,在本例中,它是'\',如下错误所示: {“valid”:false,“error”:“XDMP-BADCHAR:(errr: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发表评论,并让我走上了正确的道路来修复此问题。希望它在将来对其他人有所帮助。请尝试
'\'“
了解s**t和咯咯笑?视为\“
从技术上讲是一个字符。对不起,我应该加上这一点,我确实尝试过改为单引号以及所有其他引用和转义方式,但都没有用。改为单引号实际上破坏了我上面的两个例子。那就不是那个了!为了检查这是否是原因,您是否尝试过删除转义引号并重新创建错误?就像从JSON消息中删除它一样*谢谢你的提示!虽然我无法更改从远程系统返回的消息,但我意识到我可以使用replace来逃避导致问题的“\”,并最终显示错误。我用更新的代码回答这篇文章。呸,我什么也没做!恭喜找到解决方案:)
$(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('\"', '\\"') + '\"'}
}
}
});
});
});