Пожалуйста, загляните на следующий код, который находится в _form.html.erb
:Основные вопросы о Javascript
<script>
function typeCatch(){
$.post("<%= update_readers_link_essay_path(@essay) %>");
$(this).off("keypress", typeCatch);//remove handler
}
$(function(){
("form#new_revision").on("keypress", typeCatch);
});
</script>
Когда пользователь начинает вводить в форме, запрос Ajax должен быть уволен и обновить список читателей. Тем не менее, пост-запрос не запускается, когда я начинаю печатать в форме, и я пытаюсь отладить эту проблему.
Поскольку я еще не знаком с javacsript, я был бы признателен, если бы вы помогли мне прояснить некоторые вещи.
a. Во второй части, я могу просто сделать
$("form#new_revision").on("keypress", typeCatch);
без окружив его с $(function() {}
?
b. Есть ли что-то, что я делаю неправильно? Поскольку вызов ajax не запускается, я, должно быть, допустил ошибку во второй части?
Дополнительный вопрос
my_personal_chat.js (в приложение/активов трубопровода/JavaScripts)
$(function() {
var pusher = new Pusher('app_key');
var channel = pusher.subscribe('presence-my-chat');
channel.bind('pusher:subscription_succeeded', function(members) {
$('#online_users').empty();
members.each(function(member){
addMember(member);
});
... other functions ...
});
Это, как я реализовал свою функцию чата, с помощью толкателя. Поскольку канал является приватным, каждый раз, когда я вызываю var channel
, вызывается вызов ajax для POST /pusher/auth
.
Я обнаружил, что каждый раз, когда я перехожу на другую страницу, даже если это не функция чата, вызывается POST /pusher/auth
. В принципе, каждый раз, когда загружается my_personal_chat.js
, вызов ajax будет излишне вызван.
Вопрос: Как предотвратить это? my_personal_chat.js следует загружать только после перехода на myapp.com/chat
. Должен ли я просто вытащить все из файла javascript и поместить его в chat.html.erb
? Это обычный способ сделать это?
ответить на мой собственный вопрос: я переехал код из my_personal_chat.js
в chat.js.coffee
и удалил my_personal_chat.js
. Теперь javascript загружается только тогда, когда пользователи переходят на страницу чата.
Вам не хватает $ from '(" form # new_revision "). On (" keypress ", typeCatch)' –
Это вы снова @FrederickCheung! Спасибо. Да, я добавил его, и проблема все еще сохраняется. Кроме того, мне не нужна точка с запятой в конце? –
Semilcolons являются необязательными в JS. – pvnarula