2013-03-25 45 views
1

我真的GOOGLE了很多,但沒有找到答案,涵蓋了我的問題。

我正在開發一個Chrome擴展,我想通過jQuery進行ajax調用。
我做出這樣的:
popup.jsChrome擴展外部AJAX調用jQuery不工作

$(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...,但它永遠不會進入成功功能。我GOOGLE了,但無法弄清楚問題所在。
我在做什麼錯?

PS:我的服務器端代碼工作得很好。

+0

提問並回答之前:[在Chrome插件中獲取JSON](http://stackoverflow.com/questions/11842954/get-json-in-chrome-plugin) – 2013-03-25 08:29:34

+0

@RobW我已經閱讀了關於我的所有問題問題在stackoverflow。 – 2013-03-25 08:32:39

+1

我明白了。我有很多編寫擴展的經驗,並且在google-chrome-extension標籤中發佈了很多答案,所以即使問題的措辭略有不同,我也可以輕鬆找出核心問題並找到相應的問答。關聯問題的答案完全針對您的具體問題。如果您應用[建議的解決方案](http://stackoverflow.com/a/11845618/938089),您的分機將開始像魅力一樣工作。 – 2013-03-25 08:34:31

回答

0

感謝Rob W的幫助。

我刪除了?callback=?在URL的末尾。而在服務器端頁面我做了這樣的事情:

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

它工作正常。

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(); 

與完整的URL更換http://domain.com/

+0

感謝您的回答,但我真的堅持做它用jQuery的ajax方法。感謝您的回答:) – 2013-03-25 09:53:35

+0

我使用$ .getJSON,它的異步狀態讓我瘋狂。以這種方式去香草xhr已經讓我的思緒重新迴歸健康:) – pojda 2017-08-06 21:00:32