Jquery ajax readystate 4 responsetext status铬拓展中的状态文本错误

时间:2016-02-03 08:32:16

标签: jquery ajax google-chrome-extension

这是一个简单的Chrome扩展程序。此扩展获取当前选项卡和其他一些信息的URL,然后将其发送到我自己的服务器。它就像一个书签。但是ajax总是失败。

panel.html

<body style="width:400px">
    <form id="sender">
        Title <input type="text" name="title"><br />
        Category
        <select>
            <option>Sports</option>
            <option>Edu</option>
            <option>...</option>
        </select><br />
        Description<br />
        <textarea cols="25" rows="17" id="code" style="width:100%" name="description"></textarea><br />
        URL <input type="text" value="" name="url" id="url">

        <b>Bookamrk</b>
    </form>
    <script src="jquery.min.js"></script>
    <script src="panel.js"></script>
</body>

panel.js

$(document).ready(function () {
    chrome.tabs.getSelected( function(tab) {
        $("#url").val(tab.url);
    });
    $("b").click(function() {
        //e.preventDefaultdf();
        $.ajax({
            dataType: 'json',
             type: "POST",
             method: "POST",
            url:    'http://myurl.com',
            data: $("#sender").serialize(), 
           success: function (data)
                 {
                    $('#sender').each(function () {
                        this.reset();
                     });
                   alert('Ok :) ');
                    },
            error: function(data){
                alert(JSON.stringify(data));
            }
        });         
    });
});

的manifest.json

{
  "manifest_version": 2,

  "name": "ChromeBookmarker",
  "description": "Des",
  "version": "1.0",

  "browser_action": {
   "default_icon": "19.png",
   "default_popup": "panel.html"
  },
  "permissions": [
   "activeTab"
   ]
}

如果我正常测试 panel.html ,则效果非常好。但是,我测试它作为它显示的扩展名:

** readystate 4 responsetext status 404 statustext error **

我正在使用jquery 2.2 并使用此tutorial

修改

在研究了chrome的文档之后,我改变了一些你可以看到它的东西:

的manifest.json

{
  "manifest_version": 2,

  "name": "ChromeDL",
  "description": "For DL from Utube",
  "version": "1.0",

  "browser_action": {
   "default_icon": "19.png",
   "default_popup": "panel.html"
  },
  "permissions": [
    "tabs",
   "http://127.0.0.1:8000"
   ],
    "content_security_policy": "script-src 'self' http://127.0.0.1:8000; object-src 'self'"
} 

Popup.js

$(document).ready(function () {

    chrome.tabs.getSelected( function(tab) {
      $("#url").val(tab.url);
    });

    $("b").click(function(e) {
        e.preventDefault();
        $.ajax({
           // type: "GET",
            dataType: 'jsonp',
            url: 'http://127.0.0.1:8000/testRest/test.php',
            data: $("#sender").serialize(), 
            //crossDomain: false,
           success: function (data)
                 {
                    $('#sender').each(function () {
                        this.reset();
                     });
                   alert('Ok :) ');
                    },
            error: function(data){
                console.log(JSON.stringify(data));
            }
        });         
    });
});

test.php的

header("Content-Type: application/json");
if(isset ($_GET['callback']))
{
    $array = array(
    'fullname' => 'Jeff Hansen',
    'address' => 'somewhere no.3'
);
echo $_GET['callback']."(".json_encode($array).")";

}

它在 console.log

中返回此错误

拒绝加载脚本http://127.0.0.1:8000/testRest/test.php?callback=jQuery22008076173001900315l=http%3A%2F%2Fstackoverflow.com%2Fposts%2F35171982%2Fedit&_=1454766689571,因为它违反了以下内容安全策略指令:“script-src'self'blob:filesystem:chrome-extension-resource:”

我使用了this document但是,它不起作用。

0 个答案:

没有答案