JQuery表单验证:存在转义JSON时不显示错误消息

时间:2014-08-13 16:51:13

标签: javascript jquery forms validation

下面的脚本运行良好,但今天我遇到了一个我认为是由转义的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] + "\"";}
                }
            }
        });
    });
});

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的评论并让我走上正确的道路来解决这个问题。希望将来帮助其他人。