在Google Chrome扩展程序中使用jQuery.ajax

时间:2011-07-23 14:24:05

标签: jquery google-chrome-extension

我使用jquery.ajax函数将谷歌浏览器扩展程序的数据发布到我的网络服务,如下代码所示:

$.ajax({
            type: "POST",
            url: serviceUrl,
            data: data,
            success: function(msg){
                if(typeof(Me.config.onSumitted) == "function"){
                    Me.config.onSumitted(msg);
                }
           },
           error: function(){
                if(typeof(Me.config.onError) == "function"){
                    Me.config.onError();
                }
           }
         });

但是我收到了错误:

XMLHttpRequest cannot load http://todomain.com/Service.asp. Origin http://fromtabdomain.com is not allowed by Access-Control-Allow-Origin.

我该如何解决?

5 个答案:

答案 0 :(得分:13)

您可以查看此页面以实现您的目标:

http://code.google.com/chrome/extensions/xhr.html

这只是关于设置权限......

答案 1 :(得分:10)

您需要向manifest.js文件添加权限

"permissions": [
    "http://www.yourwebsite.com/"
  ],

答案 2 :(得分:3)

@ChristopheCVB指出http://code.google.com/chrome/extensions/xhr.html告诉你该怎么做:

请在manifest.json中添加permissions部分:

{
  "name": "yourExtension",

  "permissions": [
    "http://fromtabdomain.com"
  ]
}

答案 3 :(得分:1)

我使用原生的ajax来解决这个问题。你可以通过以下步骤来做到这一点。

ajax = function(options, callback) {
  var xhr;
  xhr = new XMLHttpRequest();
  xhr.open(options.type, options.url, options.async || true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
      return callback(xhr.responseText);
    }
  };
  return xhr.send();
};

答案 4 :(得分:0)

因为same origin policycrossDomain设置为true(ise jquery版本1.5或更高版本)

$.ajax({
            type: "POST", //or GET
            url: serviceUrl,
            data: data,
            crossDomain:true,
            cache:false,
            async:false,
            success: function(msg){
                //do some thing
           },
           error: function(jxhr){
               alert(jxhr.responseText);
                //do some thing
           }
         });