2010-12-22 49 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