1

我真的用谷歌搜索了很多,但没有找到涵盖我的问题的答案。

我正在开发一个 chrome 扩展,我想通过 jquery 进行 ajax 调用。
我是这样写的:
popup.js

$(function()
{
    $('#btn').click(function()
    {
        $('#wait').html('loading...');
        jQuery.getJSON("http://domain.com/extension_php_files/generate.php?callback=?",
        {id:25}, 
        function(data) 
        {
            $('#wait').html('');
            console.log( JSON.stringify(data) ) 
            $.each(data, function(key, val) 
            {
                alert(key + '  ' + val);
            });
        });
    });
});

这是我的popup.html

<!doctype html>
<html>
  <head>
    <title></title>
    <script src="jquery.js"></script>
    <script src="popup.js"></script>
  </head>
  <body>
  <a href="#" id="btn">SEND</a><br /><br /><br /><br />
  <span id="wait"></span>
  </body>
</html>

manifest.json

{
  "manifest_version": 2,

  "name": "black",
  "description": "black here",
  "version": "1.0",

  "permissions": [
    "http://domain.com/*"
  ],
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  }
}

当我单击SEND按钮时,我看到Loading...但它永远不会进入成功功能。我用谷歌搜索但无法找出问题所在。
我究竟做错了什么?

PS:我的服务器端代码工作得很好。

4

2 回答 2

2

我有时也很难处理 jquery ajax 请求,我最好的解决方案就是用本机 javascript Ajax 代码替换该代码。尝试使用 XMLHttpRequest 发出请求,如下所示:

var xhr = new XMLHttpRequest();
     xhr.open("GET", "http://domain.com/", true);
     xhr.onreadystatechange = function() {
      if (xhr.readyState == 4) {

          // paste your code here 
       }
     }
     xhr.send();

用您的完整网址替换http://domain.com/

于 2013-03-25T08:54:00.973 回答
0

感谢Rob W的帮助。

我删除?callback=?了网址的末尾。在服务器端页面上,我做了这样的事情:

$id = $_GET['$id'];
$arr = array ("id"=>$id,"name"=>"Siamak","lname"=>"Aghaeipour","age"=>"24");
$jsonData =  json_encode($arr);
echo $jsonData;

它工作正常。

于 2013-03-25T09:51:48.590 回答