Javascript 跨域AJAX获得Chrome扩展赢得';不行!
我无法实现这一点-我正在遵循实际的文档,以及以下示例: 我只是尝试从URL获取json数据,格式如下:{“name”:“value”},但在发出警报时返回一个“null”值 My manifest.json:Javascript 跨域AJAX获得Chrome扩展赢得';不行!,javascript,ajax,google-chrome,google-chrome-extension,Javascript,Ajax,Google Chrome,Google Chrome Extension,我无法实现这一点-我正在遵循实际的文档,以及以下示例: 我只是尝试从URL获取json数据,格式如下:{“name”:“value”},但在发出警报时返回一个“null”值 My manifest.json: { "name": "Chrome Extension", "version": "1.0", "description": "Does a GET request cross-domain.", "background_page": "plugin.html", "
{
"name": "Chrome Extension",
"version": "1.0",
"description": "Does a GET request cross-domain.",
"background_page": "plugin.html",
"permissions": [
"tabs",
"http://*"
],
"browser_action": {
"default_title": "",
"default_icon": "icon.ico"
}
}
My plugin.html:
<html>
<head>
<script>
function fetchData(callback) {
var req = new XMLHttpRequest();
req.onreadystatechange = function (data) {
if (req.readyState == 4) {
if (req.status == 200) {
callback(req.responseText);
} else {
callback(null);
}
}
};
var url = 'http://foo/bar.php';
req.open('GET', url, true);
req.send();
};
function onRequest(request, sender, callback) {
if (request.action == 'fetchData') {
fetchData(callback);
}
};
chrome.extension.onRequest.addListener(onRequest);
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.create({url: 'index.html'});
});
</script>
</head>
</html>
函数fetchData(回调){
var req=新的XMLHttpRequest();
req.onreadystatechange=功能(数据){
如果(req.readyState==4){
如果(请求状态==200){
回调(请求响应文本);
}否则{
回调(空);
}
}
};
var url='1〕http://foo/bar.php';
请求打开('GET',url,true);
请求发送();
};
函数onRequest(请求、发送方、回调){
if(request.action==“fetchData”){
获取数据(回调);
}
};
chrome.extension.onRequest.addListener(onRequest);
chrome.browserAction.onClicked.addListener(函数(选项卡){
create({url:'index.html'});
});
My index.html:
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<script type="text/javascript">
function onReturn(data) {
alert('Data ' + data);
};
chrome.extension.sendRequest({'action' : 'fetchData'}, onReturn);
</script>
</body>
</html>
函数onReturn(数据){
警报(“数据”+数据);
};
sendRequest({'action':'fetchData'},onReturn);
Duh
我建议将您请求的权限限制为您将从中提取数据的实际域。如果您只需要一个域的主机权限,则没有理由请求访问整个Internet。:)哈哈。无论如何,这不是一个可怕的建议。
http://*/*