请查看以下代码,该代码位于_form.html.erb
:
<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 还不是很熟悉,如果您能帮助我澄清一些事情,我将不胜感激。
一个。对于第二部分,我可以做吗
$("form#new_revision").on("keypress", typeCatch);
不用包裹它$(function() {}
?
湾。有什么我做错了吗?由于没有触发ajax调用,我一定在第二部分犯了错误?
附加问题
my_personal_chat.js(在 app/assets/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 ...
});
这就是我使用 Pusher 实现聊天功能的方式。由于通道是私有的,所以每次我调用var channel
时,都会调用一个 ajaxPOST /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
tochat.js.coffee
和 deleted移动my_personal_chat.js
。现在只有当用户进入聊天页面时才会加载 javascript。