javascript - Ajax 与 chrome 扩展

标签 javascript php ajax google-chrome-extension

我将 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/

相关文章:

PHP 第 10 个逗号后换行

php - Crystal 报表,mysql用php建网站,请问可以吗?

javascript - 如何使用ajax从文本字段中读取?

javascript - Ajax 的跨域限制 - JSON

javascript - 弹出窗口仅在单击第一个 div 时起作用

javascript - 我可以将 JSNice 与 ES6 一起使用吗?

PHP 文件无法识别从 ajax 文件发送的数据

jquery - 为什么 jQuery Ajax 在 Cordova iOS 应用程序中不起作用

javascript - 将 JavaScript WebSocket 连接到 C winsock

javascript - 用 JS 在 DIV 结束时的事件