2017-08-09 32 views
-2

我與JIVE JSON REST風格的API的工作和他們的API,他們有一個安全拆除JSON行解析

(我指的是扔「allowIllegalResourceCall是假的。」;)

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