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