2010-12-22 48 views
1

我有一个导轨后端和正在测试针对它下面的jQuery代码:

var content = $("#notification_content").val(); 
    var data = new Object(); 
    data.content = content; 
    $.ajax({ url: "/notifications/detect_type.json", type:"POST", data: data, success: function(result ){updateTypeDropDown(result)}}); 

此代码工作正常在Chrome和IE中。不过在Firefox(使用Firebug),我看到: http://localhost:3000/notifications/detect_type.json 406不可接受

这里是日志中的Firefox要求:

处理 NotificationsController#detect_type (用于在127.0.0.1 2010-12-21 17:05:59) 参数: {“action”=>“detect_type”, “content”=>“226 south emerson denver co 80209”, “controller”=> “通知”}用户 C (2.0ms)SHOW FIELD从 users用户负载(37.4ms)SELECT *从users WHERE(users。限制1在58ms内完成(查看: 1,DB:40)| 406不可接受[HTTP://localhost/notifications/detect_type.json]


这里是在日志中铬请求:

处理 NotificationsController#detect_type (对于127.0.0.1在2010-12-21 17:06:41) [POST]参数:{“action”=>“detect_type”, “content”=>“226 south emerson 80209”, “controller”= >“的NotI fications“}
用户列(2.1ms)显示字段FROM users
用户负载(30.4ms)
SELECT * FROM users WHERE(users。限制1完成 in 100ms(查看:1,DB:33)|
200 OK [HTTP://localhost/notifications/detect_type.json]

我难倒。想法?

+0

对于任何人可能会遇到这种情况,我在Firefox中有完全相同的错误,然后我意识到我的Firefox在Firefox中被禁用。 – lnreddy 2013-07-01 10:42:47

回答

2

奇怪的是,解决的办法是做到这一点的轨道面:

format.js { 
    render :text => type.to_json 
} 
format.json { 
    render :json => type.to_json 
} 

JQuery的错误吗?不知道...

0

基于快速搜索,它看起来可能是406表示浏览器(在这种情况下,Firefox)拒绝接受从服务器为请求提供的内容类型。 (This is one such explanation.)

尝试配置Firefox以接受json。基于this post它看起来像Firefox可能需要使用扩展...

UPDATE

因为这似乎是一个直使用$你应该能够得到这个工作阿贾克斯没有任何奇怪的Firefox客户端设置更改。尽量明确地告诉jquery的什么数据类型返回的值应该是由init过程中添加的选项,如下所示:

数据类型:“JSON”

请参阅相关的jQuery文档here获取更多信息。

+0

我认为这个答案是在正确的轨道上...但我想让这个响应只适用于任何Firefox ....我将不得不切换到XML? – 2010-12-22 03:40:13

+0

你不应该;我可以使用Firefox $ .ajax罚款 - 尝试添加`dataType:“json”`;我会添加到我的答案 – Tahbaza 2010-12-22 03:45:51