У меня проблема, которая сводит меня с ума, и, судя по всему, что я видел и читал в Интернете, она должна работать нормально.
Я использую jQuery с моим Rails-приложением вместо прототипа и использую плагин ajaxForm для отправки некоторых данных формы через ajax. Данные формы отправляются в порядке, соответствующее действие контроллера вызывается в порядке, правильный блок response_to для типа js вызывается в порядке.
Проблема заключается в том, что содержимое файла * .js.erb возвращается клиентскому браузеру и не интерпретируется как javascript. На самом деле ничего не происходит с этим. Да, я установил dataType: 'script', но он все еще не работает. Я также пытался не использовать плагин ajaxForm и вручную использовать функцию $ .post при отправке формы, но результат все тот же.
для некоторых примеров кода, вот мой вызов ajaxForm:
$("#purchase-item-form").ajaxForm({
dataType: 'script'
});
Я также правильно устанавливаю заголовок accept, это работает нормально, потому что выполняется мой блок format.js
jQuery.ajaxSetup({
'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") }
});
в моем файле действия * .js.erb все, что у меня есть, - это предупреждение на данный момент, чтобы помочь отладить проблему, пока я не смогу ее выяснить:
alert("action processed successfully");
Это просто не работает в Firefox или Safari. Если я загляну в консоль firebug, то увижу, что оператор alert возвращается как ответ на вызов ajax, а клиент просто не оценивает его как javascript.
К вашему сведению, я работаю на Rails 2.3.4 и jQuery 1.3.2, если это имеет значение