0

我正在编写一个 Chrome 扩展程序,它需要从另一个站点加载一些数据。根据我的研究,我相信我应该为此使用 XMLHttpRequest,但它会为我尝试的每个站点返回 responseText="" 和 status=0。我传入 javascript 的 URL 很好;我试过了

http://www.google.com

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22MSFT%22)&env=store://datatables.org/alltableswithkeys.

我在做一些无知/愚蠢的事情吗?我相信这是清单中的权限,但我现在拥有的应该允许这两个站点。我在我的 javascript 控制台中看不到任何错误。

清单:

{
  "manifest_version": 2,

  "name": "nnnn",
  "description": "nnnn",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "storage",
    "http://*.query.yahooapis.com/*",
    "http://*/*",
    "https://*/*"    
  ]
}

javascript函数:

function getSite(queryUrl) {
  var request = new XMLHttpRequest();
  request.open("GET", queryUrl, true);
  console.log(queryUrl);
  request.onreadystatechange = function () {
    console.log(request);
   if (request.readyState == 4) {
      if (request.status == 200) {
        console.log(request.responseText);
      } else {
        console.log('Unable to resolve address');
      }
    }
  };
  request.send(null);
}

编辑: http: //developer.chrome.com/extensions/xhr.html 这几乎是我一直在寻求指导的内容,但显然有些事情已经超出了我的脑海。

4

2 回答 2

2

我不认为这是与许可相关的问题。如果是这样,控制台中会出现一条错误消息,宣布权限问题。我认为您的 XMLHttpRequest 有问题。确保queryUrl你传递给函数是正确的。

您可以使用Fiddler检查您的请求有什么问题。

于 2013-01-27T20:02:25.697 回答
2

我做了一些无知的事情,并且提交了一个表单,导致页面刷新并在完成时丢弃以前的 XMLHttpRequest

于 2013-01-28T19:49:02.523 回答