Javascript JSON 返回带有未转义字符的错误

Javascript JSON return error with unescaped character

本文关键字:转义字符 错误 JSON 返回 Javascript      更新时间:2023-09-26

您好,感谢您抽出宝贵时间查看本文。

我遇到的问题是来自第三方服务的 JSON 返回,所以我无法控制 JSON 的格式。我正在使用以下内容(精简到重要部分)

function JSONgrabber(Zip,iplocation)
        {
            var requestBase ="http://www.someCompany.com/api/request";
            var requestData ="iplocate=true&output=json&callback=useJSON";
            var request=requestBase+"&&zip="+Zip+"&"+requestData;
            if(iplocation ==false || iplocation=="false")
            {
                request=request.replace("iplocate=true","iplocate=false");
            }
            if (document.getElementById("JSONDataMaster"))
            {
                var element = document.getElementById("JSONDataMaster");
                element.parentNode.removeChild(element);
            }
            try{
            var head = document.getElementsByTagName("head").item(0);
            var script = document.createElement("script");
            script.setAttribute("type", "text/javascript");
            script.setAttribute("src", request);
            script.setAttribute("id", "JSONDataMaster");
            head.appendChild(script);
            }
            catch(err){console.log("Problem loading JSON Data");}
            }
        function useJSON(JSONDATA){}

这在 99% 的时间内都符合预期,但有时回报率会像

Joe's Diner 和 ' 导致未捕获的语法错误:意外的标识符,这发生在返回期间,所以我无法通过替换等来修复它,因为它永远不会进入回调函数。

任何见解都非常感谢。我没有使用任何外部库(jquery等),所以请任何帮助必须是纯JS(也许是php)

您需要检查要获取的字符串是否包含特殊字符,如果是,则需要对其进行转义

这是一个很好的页面,可以帮助理解:

网络艺术

此问题类似:

斯塔科

如果检查每个字符串中的单引号并将其替换为转义的单引号:

mystring.replace("'","'''");