2017-08-09 5 views
-2

を解析JSONから行を削除します(私はスローに言及しています 'allowIllegalResourceCallはfalseです。';)は、私はJIVE JSON RESTfulなAPIで働いていますし、そのAPIに、彼らはセキュリティ</p> <p>を持って

throw 'allowIllegalResourceCall is false.'; 
{ 
    "id" : "52104", 
} 

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     var myObj = JSON.parse(this.responseText); 
     document.getElementById("topdisplay").innerHTML = myObj.id; 
    }  
}; 
xmlhttp.open("GET", "http://mysite/API/",true); 
xmlhttp.send(); 

をそして私はそのせいでスタートラインのエラーを取得しています:

私はそれを解析しようとするこのコードを使用しています。 JSON PARSEをスキップして解決する方法を見つけようとしていましたが、その方法を見つけることができません。

また、私は最初の行を削除すると完全に動作するので、解析コードが機能することを知っています。

助けが必要ですか?

+1

https://stackoverflow.com/questions/25194600/removing-the-first-line-from-a-json-response – WookieCoder

+0

JSON.parseを見てはそうのような文字列のオブジェクトで動作します: ' "{channel:" irc "}" '、JSONファイルをここに貼り付けることができます。 – akinjide

+0

@akinjide質問を読む...応答は – charlietfl

答えて

-2

JIVE REST APIは、Webブラウザが影響を受けやすいときにJSONハイジャックバックを防止するためにこれを導入しました。

最初に{を探し、その位置から文字列の最後まで部分文字列を行う必要があります。

var xmlhttp = new XMLHttpRequest(); 

xmlhttp.onreadystatechange = function() { 

    if (this.readyState == 4 && this.status == 200) { 
     var response = this.responseText 
       var myObj = JSON.parse(this.responseText.substring(this.response.indexOf('{'))); 

     document.getElementById("topdisplay").innerHTML = myObj.id; 
    }  
}; 

xmlhttp.open("GET", "http://mysite/API/",true); 
xmlhttp.send(); 

注:

正規表現を使用して、あなたは空の文字列に置き換えた場合、スローとセミコロンで終わるとの最初の行を見つける必要があります。

JSON.parse(response.replace(/throw.*;/, "").trim()); 
+0

私は行を変更:var myObj = JSON.parse(this.responseText.substring(this.response.indexOf( '{'))); – Darky

+0

いいえ、うまくいく – akinjide

+0

可読性のために、変数にXHR応答を割り当てる必要があります。 :クール: – akinjide