2010-04-20 40 views
2

內。在我的Chrome擴展我稱之爲:難倒jQuery的電話Chrome擴展

jsonPost = { 
    email:"[email protected]", 
    password:"demo", 
    content: $('#selected_text').val(), 
    notification_type: $('#notification_type').val(), 
    name:$('#notification_name').val() 
} 

$.post('http://localhost:3000/api/create.json', jsonPost, 
     function (data) { 
      console.log("type of data = " + typeof(data)); 
      console.log("data in function = " + data); 
      } 

的數據,使得它的服務器。但響應丟失,在控制檯 ---數據類型=字符串 ---數據在功能=

所以出於某種原因,我沒有得到迴應。從瀏覽器運行。我甚至嘗試過與cnn.com對抗,但沒有得到任何迴應。

有什麼想法?

感謝

+2

我相信擴展在這種情況下受[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy)的限制,但我可能是錯的。易於測試,只需使用'chrome.exe --disable-web-security'啓動chrome並查看它是否有效。 – 2010-04-20 14:13:11

回答

1

您是否遇到跨站點腳本限制?如果它在位於「本地主機」但不在擴展中的頁面中工作,則可能需要請求Chrome訪問擴展默認安全環境之外的內容。看看谷歌對requesting cross-origin permissions for an extension的建議是否有幫助。

+0

它不是「json」(我試過)。這是一個權限問題。在manifest.json中我加入了它,它起作用:「permissions」:[「tabs」,「http:// * /」], 其實我想在那裏使用http:// localhost:3000 /似乎沒有工作。但那只是我的測試env,所以我現在不太在意...... – 2010-04-20 14:56:52

1

您需要使用JSON作爲崗位類型,速記方法,使用這樣的

$.post(url, data, function(result) { 

}, 'json'); 
1

jQuery將採取「最佳猜測」在如何解釋基於數據MIME類型和其他一些因素,它可能會猜測錯誤?您可以通過在ajax文檔中添加fourth parameter指定數據類型  —(例如「json」,「text」,「html」... Full list here)來強制執行該操作。