Порядок моего javascript включает теги, и я не понимаю, почему - PullRequest
0 голосов
/ 23 мая 2011

Я использую скрепку с uploadify, и я смог заставить ее работать нормально. Я также использую AJAX, чтобы пара кнопок отправки не запускали перезагрузку всей страницы. Раньше он работал нормально и теперь перестал работать (журнал показывает, что js.erb не вызывается).

Вот что у меня в приложении:

[remi@iMac]$ l public/javascripts/
total 728
-rw-r--r--@ 1 remi  staff     148 May 17 08:01 application.js
-rw-r--r--@ 1 remi  staff   34787 May 17 08:01 controls.js
-rw-r--r--@ 1 remi  staff   31056 May 17 08:01 dragdrop.js
-rw-r--r--@ 1 remi  staff   38467 May 17 08:01 effects.js
-rw-r--r--@ 1 remi  staff   72328 May 22 10:50 jquery-1.4.2.js
-rw-r--r--@ 1 remi  staff  162353 May 17 08:01 prototype.js
-rw-r--r--@ 1 remi  staff    5850 May 17 08:01 rails.js
-rwxr-xr-x@ 1 remi  staff   10220 May 17 08:01 swfobject.js
drwxr-xr-x  5 remi  staff     170 May 22 10:38 uploadify

И я заметил, что порядок включения тегов javascript имеет значение. Когда я сначала включаю jquery, uploadify не работает, но ajax работает нормально.

  <%= javascript_include_tag "jquery-1.4.2.js" %>   
  <%= javascript_include_tag :defaults %>

Когда я изменяю его, тогда загружается, но щелчок по моим кнопкам ajax перезагружает страницу:

   <%= javascript_include_tag :defaults %>
   <%= javascript_include_tag "jquery-1.4.2.js" %> 

Я все еще новичок в этом, вы можете указать мне какое-нибудь объяснение?

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Файлы JavaScript загружаются в «порядке появления». Вы должны включить их так, как вы хотите, чтобы они работали с другими файлами JavaScript.

Например:

<script>
    // I need some stuff written in script1.js
</script>
<script src="script1.js"></script>

Не сработает, потому что вам нужно загрузить script1.js перед вашими вещами.

Вот почему библиотеки JavaScript (такие как jQuery или Prototype) должны быть загружены первыми (включая вас). Вот почему ваш AJAX не работает, когда загружается до jQuery.

1 голос
/ 23 мая 2011

Полагаю, jQuery и Prototype борются за $.

Вы должны настроить jquery-rails в своем приложении, чтобы Rails полагался на среду, которую вы используете в других местах.

См. Ссылку здесь .

...