2014-01-26 107 views
0

我想做一个谷歌浏览器扩展程序,但是我整晚都在嘲笑我的问题。我有以下的代码给了我一个问题:在谷歌浏览器扩展程序中获取JSON

var xhr = new XMLHttpRequest(); 
var resp; 
xhr.open("GET", "http://www.roblox.com/catalog/json?Subcategory=16&SortType=3&ResultsPerPage=10", true); 
xhr.onload = function() { 
    resp = JSON.parse(xhr.responseText); 
} 
xhr.send(); 

我试图得到一些JSON数据。如果我用var resp = //(The actual JSON data itself)替换这部分代码,那么扩展工作得很好。

如何正确获取此JSON数据,并且与任何下载我的扩展名的人保持紧密关系?

对不起,如果有明显的答案,我还是新来的Javascript。

谢谢!

+1

'.onreadystatechange'而不是'.onload',并检查xhr.readyState = 4和xhr.status == 200以检查您何时有响应。 [MDN示例](https://developer.mozilla.org/es/docs/XMLHttpRequest/Usar_XMLHttpRequest#Example.3A_Asynchronous_request) –

+0

也许尝试使用JSONP ...?不过,我不确定你可以在Chrome扩展程序中使用它。 – Atutouato

+0

IMO会使用jQuery或类似的方法(将这种复杂性从你身上抽象出来)更容易。 – datashaman

回答

0

尝试设置内容类型。并非所有浏览器都使用相同的默认设置。

xhr.setRequestHeader("Content-Type", "*/*"); 
+0

这将有助于我的兼容性问题。在插入这一行时,我也意识到我的一个变量需要是全局的。简单的错误往往是最难找到的! – DiamondBladee

相关问题