Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery表单验证:存在转义JSON时不显示错误消息_Javascript_Jquery_Forms_Validation - Fatal编程技术网

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

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

下面的脚本工作得很好,但今天我遇到了一个我认为是由转义JSON引起的场景

正如您将在下面的代码中看到的,我正在使用远程验证根据需要以JSON格式返回错误消息

返回的On-particulr错误消息似乎未显示: {“valid”:false,“error”:“XDMP-BADCHAR:(errr:XPST0003)发现意外字符“\”(0x0022)}

我的怀疑是,这是由于逃逸的双引号(在上面粗体)

我怀疑这是因为类似的错误消息显示得很好:{“valid”:false,“error”:“XDMP-BADCHAR:(err:XPST0003)找到了意外字符“”(0x0027)}

我试图进一步逃避,但无济于事。任何建议都将不胜感激

代码:


由于我无法更改返回的远程响应,因此我使用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('\"', '\\"') + '\"'}
                }
            }
        });
    });
});