Chrome扩展程序:远程api并解析收到的JSON数据

时间:2016-01-01 18:13:45

标签: javascript jquery google-chrome-extension

我正在进行Chrome扩展,调用远程API,我需要读取JSON数据,但它无法解析数据? Jquery应该包含在"背景中:"清单属性? 如果是,怎么样? " http://ajax.googleapis.com/ajax/libs/lquery/1.11.0/jquery.min.js"

的manifest.json

{
  "manifest_version": 8,

  "name": "Getting started example",
  "description": "This extension shows a Google Image search result for the current page",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_title": "p",
    "default_popup": "popup.html"
  },
    "background": {
    "scripts": ["background.js"]
  },
    "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],

      "js": [ "myscript.js"]
    }
  ],
  "icons": {
      "64":"icon.png"
      },
  "permissions": [
      "http://domain.com/*"
    ]

}

background.js

   var xhr = new XMLHttpRequest();

    xhr.open("GET", "http://domain.com/api/path", false);
    xhr.send();

            var result = xhr.responseText;
           //var result = eval('(' + xhr.responseText + ')');

    alert(result);//work print json data
    alert(result.results[1].url);// does not work

收到json数据

{"results":[
{"name":"Academic","url":"http:\/\/www.rapidintellect.com\/AEQweb\/"},{"name":"Academy","url":"http:\/\/aocrj.org\/"}
]} {"results":[
{"name2":"Academic","url":"http:\/\/www.rapidintellect.com\/AEQweb\/"},{"name2":"Academy","url":"http:\/\/aocrj.org\/"}
]}

1 个答案:

答案 0 :(得分:0)

您可以使用Object函数将JSON解析为JavaScript中的JSON.parse

var result = JSON.parse(xhr.responseText);
alert(result.results[0].url);

我不确定您的初始Ajax请求是否有效。

考虑到您使用标记了此问题,我们可以简化Ajax请求,并自动解析JSON:

$.ajax({
  type: 'GET',
  url: 'http://example.com/...',
  dataType: 'json',
}).success(function(result){
  alert(result.results[1].url)
});

或者,由于这是一个简单的GET请求,您可以使用更简洁的东西:

$.getJSON('http://example.com/...', function(result){
  alert(result.results[1].url)
});