2017-08-09 59 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