这是一个简单的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但是,它不起作用。