我将网址发送到chrome扩展名的php文件中,并且需要获取响应,但无法正常工作。

manifest.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为aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,则您的弹出窗口将具有URL chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/popup.html,这将导致对chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/file.php的请求,而不是对您在注释中使用的本地服务器的请求。

您需要使用完整的URL:

    url: 'http://localhost/file.php'

10-04 21:39
查看更多