Javascript JSON返回错误,未转义字符

时间:2012-05-09 12:45:39

标签: javascript json

您好,感谢您抽出时间来了解此事。

我遇到的问题是从第三方服务返回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和'导致未捕获的SyntaxError:意外的标识符,这在返回期间发生,所以我无法通过替换等来解决它,因为它永远不会到达回调函数。

非常感谢任何见解。我没有使用任何外部库(jquery等)所以请任何帮助需要是纯JS(也许是PHP)

1 个答案:

答案 0 :(得分:0)

你需要检查你想要获得的字符串是否包含特殊字符,如果是,你需要转义它们

这是一个很好的页面,有助于理解:

art of the web

这个问题类似:

stacko

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

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