jquery $ .ajax не работает в Firefox против рельсов (ответ 406) (работает в Chrome и IE) - PullRequest
1 голос
/ 22 декабря 2010

У меня есть серверная часть rails, и я тестирую следующий код 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) [POST] Параметры: {"action" => "detect_type", "content" => "226 south emerson denver co 80209", "controller" => "notifications"} Пользовательские столбцы (2,0 мс) ПОКАЗАТЬ ПОЛЯ ИЗ users Пользовательская нагрузка (37,4 мс) ВЫБРАТЬ * ОТ users ГДЕ (users. id = '1') LIMIT 1Завершено в 58мс (Просмотр: 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" => "notifications"}
Пользовательские столбцы (2,1 мс) ПОКАЗАТЬ ПОЛЯ ИЗ users
Пользовательская нагрузка (30,4 мс)
ВЫБРАТЬ * ИЗ users ГДЕ (users. id = '1') ПРЕДЕЛ 1 Завершено за 100 мс (Вид: 1, БД: 33) |
200 ОК [http://localhost/notifications/detect_type.json]

Я в тупике.Идеи?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2010

Как ни странно, решение было сделать это на стороне рельсов:

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

Ошибка JQuery?Не уверен ...

0 голосов
/ 22 декабря 2010

На основании быстрого поиска, похоже, что 406 указывает на отказ браузера (в данном случае Firefox) принять тип контента, доставляемого с сервера для запроса. (Это одно из таких объяснений.)

Попробуйте настроить Firefox для приема json. На основании этого поста похоже, что Firefox может захотеть использовать расширение ...

UPDATE

Поскольку это, кажется, прямое использование $ .ajax, вы должны иметь возможность заставить это работать без каких-либо нечетных изменений настроек клиента Firefox. Попробуйте явно указать jquery тип возвращаемых данных, добавив параметр во время init, например:

dataType: "json"

См. Соответствующие документы jquery здесь для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...