отсутствует ошибка jQuery (точка с запятой) перед оператором - PullRequest
0 голосов
/ 06 июля 2010

Я застрял в своем приложении на Rails, где я использую JQuery для отправки / получения ajax-запросов, и у меня возникает следующая ошибка (обнаружена с помощью Firebug).

missing ; before statement 

<script type="text/javascript">\n

Я использую ajax-метод JQuery, чтобы публиковать подобные сообщения:

function day_on_change() {    
     jQuery.post( "/times/add"+ "?day_id=" + $('#day_id').val() + "&pool_id=" + $('#pool_id').val() ,null, function(data) {
       $('#container').html(data);
     }, "script");
}

Функция 'day_on_change' вызывается при изменении выпадающего меню выбора. Он отправляет «times / add» с помощью ajax, а данные ответа заменяются в Div с идентификатором «container».

Данные ответа следующие:

<script type="text/javascript">
  DD_roundies.addRule('#normal_header_2', '5px 5px 0 0');
  DD_roundies.addRule('#normal_footer', '0 0 5px 5px');

</script>


<script type="text/javascript">
jQuery(function($) {

  //more js code here
});
</script>
<!-- Some HTML here too -->

Любая помощь будет оценена.

Приветствие.

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Запустите ваш код через JSLint

(Примечание: JSLint ранит ваши чувства)

1 голос
/ 07 июля 2010

После долгих часов отладки и попыток решить проблему, я наконец-то выяснил, в чем причина проблемы. Пожалуйста, позвольте мне объяснить

Из приложения Rails, когда я вызываю ajax-запросы вроде

jQuery.post( "/times/add"+ "?day_id=" + $('#day_id').val() + "&pool_id=" + $('#pool_id').val() ,null, function(data) {
       $('#container').html(data);
     }, "script");

, похоже, JQuery ожидает, что ответом будет «скрипт» (поскольку я использую опцию «скрипт» в методе jQuery.post). Но в моем контроллере приложения Rails я отвечал на этот запрос следующим образом:

 respond_to do |format|
      format.html { render :action => 'embed' }
      format.js { render :partial => 'embed_' + @size, :locals => {:timetable_entries => @timetable_entries} }
    end

Я отвечал на запрос частичным фрагментом, который представляет собой просто файл html.erb со смешанными кодами, включая JS, HTML и Ruby. И после тестирования в течение нескольких часов я обнаружил, что у меня все еще есть различные ошибки в firebug даже без javascript в данных ответа. Это дает мне ошибку «XML не может быть всей программой», когда у меня нет js-кода там. Поэтому после прочтения this я понимаю, что возвращаю данные ответов в неправильном формате.

Итак, я изменил свой контроллер, чтобы ответить следующим образом.

 respond_to do |format|
      format.html { render :action => 'embed' }
      format.js
    end

, который в основном будет ожидать, что файл 'add.js' обработает javascripts. Поэтому я создал add.js и поместил туда это.

$("#container").html("<%= escape_javascript(render :partial => 'embed_' + @size, :locals => {:timetable_entries => @timetable_entries}) %>");

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

Приветствие.

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