Chrome扩展程序与其他Web服务进行通信

时间:2014-11-23 16:53:34

标签: javascript web-services google-chrome-extension

我是chrome扩展程序的新手,我正在开发一个扩展程序,它将与我的其他Web服务进行通信。我的其他Web服务将返回一个json字符串。我想做的是调用我的Web服务,获取响应json。

目前我在我的background.js中有这个:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.getSelected(null,function(tab) {
        var link = tab.url;
        alert(link);
    });
});

我的计划是当用户点击图标扩展名时,当前标签页将被发送到我的网络服务,它将获得响应json。

我的问题是,在C#中执行类似webclient.downloadstring的代码或语法是什么?或者我如何与Web服务进行通信?

2 个答案:

答案 0 :(得分:7)

您正在寻找的API称为XMLHttpRequest(也称为“AJAX”)。请阅读https://developer.chrome.com/extensions/xhr处的文档以获取更多信息。

以下是一个例子:

chrome.browserAction.onClicked.addListener(function(tab) { 
    var link = tab.url;
    var x = new XMLHttpRequest();
    x.open('GET', 'http://example.com/?whatever=' + link);
    x.onload = function() {
        alert(x.responseText);
    };
    x.send();
});

请注意。 XMLHttpRequest API是异步的。这意味着你不能做这样的事情:

...
var result;
x.onload = function() {
    result = x.responseText;
};
x.send();
alert(result); // Does not behave as you expect!

答案 1 :(得分:0)

我认为所有事情都在权限中。

http://www.appuntivari.net/informatica/programmazione/chrome-extension/chrome-extension-with-restfull-external-api

{
  "manifest_version": 2,

  "name": "AppuntiVari.net - Agenda events",
  "description": "AppuntiVari.net - Agenda events",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": ["tabs", "http://appuntivari.net/*"],
  "options_page": "options.html",
  "homepage_url": "http://appuntivari.net",

  "background": { "scripts": ["js/jquery-1.10.2.js",
"js/jquery-ui-1.10.4.custom.js","background.js","popup.js"] },

  "web_accessible_resources": [
    "48.png"
  ],
  "icons": {"16": "16.png", "48": "48.png", "128": "128.png"}
}
$.ajax({
url:  "http://appuntivari.net/MyServiceAPI-portlet/
api/secure/jsonws/agenda/get-events-byIdUser/id_user/"+id_user,
type: "GET",