Неработающая ссылка Rails в Firefox - PullRequest
0 голосов
/ 09 февраля 2009

У меня есть следующий код Rails, генерирующий код

(Я удалил потенциально секретный материал, извините за нечетные имена, но длина имен и значений переменных совпадает)

<%= link_to_remote "FOUR", :method => "get", :url => {:action => "testing01_four_log_info", :fourth_name => "LA1", :testing01_num => "123"} %>

Этот код генерирует:

new Ajax.Request('/traffic/testing01_four_log_info?testing01_num=123&fourth_name=LA1', {asynchronous:true, evalScripts:true, method:'get'});

Проблема в том, что ссылка работает и возвращает значения при нажатии в IE и Safari, а также в Chrome и Opera. Это не из Firefox (версия 3.0.6). На самом деле консоль Firebug, похоже, указывает на то, что ничего не отправляется. Однако, когда я нажимаю на ссылку, код :before (который я исключил из кода link_to_remote выше) действительно выполняется.

Итак, что я делаю не так?

РЕДАКТИРОВАТЬ: Хорошо, так что после работы над этой проблемой больше это проблема с Firefox и как он обрабатывает код. Я могу запросить URL прямо из Firefox, и он будет работать. Так что это либо ошибка с Firefox, либо ошибка с моим кодом. Duh! :) Как примечание, я столкнулся с этой проблемой однажды. В этом случае, хотя это было потому, что URL был слишком длинным, и в этом случае Apache не был доволен. В этом случае Firefox чего-то не устраивает.

И отладка с помощью Wireshark показывает, что по проводам ничего не происходит. Другие ссылки будут проходить через провод, но не этот. Только из Firefox.

РЕДАКТИРОВАТЬ: Решено. Adblock Plus был виновником. Отключение этого для моего сайта решило проблему. Спасибо, переполнение стека!

Ответы [ 2 ]

2 голосов
/ 10 февраля 2009

Когда происходят действительно странные вещи, самое время проверить еще раз очевидное.

  • У вас включен JavaScript в Firefox?
  • У вас есть NoScript или что-нибудь подобное, установлено?
0 голосов
/ 10 февраля 2009

У меня была похожая проблема из-за кэширования ответов XHR в Firefox. Я должен был добавить правильные заголовки HTTP к ответу (код C генерировал ответ). Некоторые работали только для IE, некоторые для Firefox. Но вы сказали, что кеш здесь не тот случай. Просто дважды проверьте это.

Другой возможный случай. Браузеры ограничивают количество одновременно открытых соединений с сервером. Есть только 2 возможных одновременно. Поэтому, если у вас есть несколько закрытых соединений с вашим веб-сервером, Firefox будет ждать их завершения и приостановит ваш запрос XHR.

Иногда антивирусные / локальные брандмауэры могут вызывать похожие проблемы. Однако это маловероятно, поскольку ваш запрос работает при загрузке непосредственно из адресной строки.

Если ничего не получается, вам просто нужно построчно отследить код lib прототипа и посмотреть, где ваш запрос заблокирован. Вы уверены, что код Ajax выполняется так, как ожидалось?

...