2010-04-20 59 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)来强制执行该操作。