0

こんにちは、この記事をご覧いただきありがとうございます。

私が抱えている問題は、サードパーティのサービスからの 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 と ' は Uncaught SyntaxError: Unexpected identifier を引き起こします。これはリターン中に発生するため、コールバック関数に到達しないため、置換などを介して修正することはできませんでした。

どんな洞察も大歓迎です。私は外部ライブラリ (jquery など) を使用していないので、純粋な JS (おそらく php) である必要があるヘルプをお願いします

4

1 に答える 1

0

取得したい文字列に特殊文字が含まれているかどうかを確認する必要があり、含まれている場合はそれらをエスケープする必要があります

これは理解するのに役立つ良いページです:

ウェブの芸術

この問題は似ています:

スタッコ

すべての文字列に一重引用符があるかどうかを確認し、エスケープされた一重引用符に置き換えると、次のようになります。

mystring.replace("'","\\'");
于 2012-05-09T12:52:35.063 に答える