我将 url 发送到 chrome 扩展中的 php 文件,并需要获取响应,但不起作用。
list .json
{
"name": "Get pages source",
"version": "1.0",
"manifest_version": 2,
"description": "Get pages source from a popup",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": ["http://localhost/"]
}
popup.js
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
var parametros = {
"url" : url
};
$.ajax({
type: "POST",
data: parametros,
url: 'file.php',
success: function(data) {
var res = jQuery.parseJSON(data);
alert("success");
},
error: function(e) {
alert("error");
}
});
});
file.php - 位于本地主机的同一文件夹中
<?php
$resultado = $_POST['url'];
echo $resultado;
?>
和 popup.html
<html style=''>
<head>
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script src='popup.js'></script>
</head>
<body style="width:400px;">
<span id="resultado">0</span>
</body>
</html>
此代码仅返回一个空数组。
不可以在chrome扩展中使用Ajax吗?
编辑:
我使用本地文件(而不是 CDN)对 jquery 进行收费,并且工作正常。
其他问题在我的代码中,我的问题是在 jQuery.parseJSON 中。
感谢大家;)
最佳答案
您的问题出在您尝试发布到的 URL 上。
$.ajax({
type: "POST",
data: parametros,
url: 'file.php', // That's a relative URL!
success: function(data) {
var res = jQuery.parseJSON(data);
alert("success");
},
error: function(e) {
alert("error");
}
});
假设您的扩展程序的 ID 为 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
,那么您的弹出窗口将具有 URL chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/popup.html
,这将产生一个请求到 chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/file.php
,而不是您在评论中所说的正在使用的本地服务器。
您需要使用完整的 URL:
url: 'http://localhost/file.php'
关于javascript - Ajax 与 chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778045/