Javascript 在RubyonRails应用程序中,页面不断使用AJAX调用重新加载
我相信这是一个简单的解决方案,但它让我发疯。我有一个RubyonRails应用程序,在jQuery按钮单击事件上对控制器操作进行简单的AJAX调用,以提交数据,并在成功提交时启动一个模式弹出窗口。请参阅下面的代码Javascript 在RubyonRails应用程序中,页面不断使用AJAX调用重新加载,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我相信这是一个简单的解决方案,但它让我发疯。我有一个RubyonRails应用程序,在jQuery按钮单击事件上对控制器操作进行简单的AJAX调用,以提交数据,并在成功提交时启动一个模式弹出窗口。请参阅下面的代码 <script type="text/javascript"> $('.linkclass').click(function() { id = $(this).attr('id'); event.preventDefault(); $.ajax({ url:
<script type="text/javascript">
$('.linkclass').click(function() {
id = $(this).attr('id');
event.preventDefault();
$.ajax({
url: "/controller_name/action_name/" + id,
type: "GET",
success: function (data) {
// call my modal pop-up
$( "#dialog" ).dialog();
}
});
});
</script>
$('.linkclass')。单击(函数(){
id=$(this.attr('id');
event.preventDefault();
$.ajax({
url:“/controller\u name/action\u name/”+id,
键入:“获取”,
成功:函数(数据){
//调用我的模式弹出窗口
$(“#dialog”).dialog();
}
});
});
视图中与此问题相关的唯一HTML如下(modal div和链接HTML)。同样,当Javascript在视图中时,这也可以正常工作:
<%= link_to "Submit your info", "/controller_name_name/action_name/#{product.id}", :id => product.id, :class => "linkclass" %>
<div id="dialog" title="Basic dialog" style="display:none">
<p>Your data has been successfully submitted!</p>
</div>
product.id,:class=>linkclass%%>
您的数据已成功提交
当Javascript在视图中并且页面没有像我所希望的那样重新加载时,此代码可以完美地工作。但是,当我将此Javascript代码(减去脚本标记)放在单独的Javascript文件中时,它会在单击链接时刷新页面。所有内容都可以提交,但页面会重新加载/刷新,我不希望它重新加载。当我把代码放在一个单独的文件中时,我是否忘记了向代码中添加额外的内容?单独的js文件位于assets/javascript文件夹中,包含在HTML中(我在viewsource中看到它),所以这不是问题所在
任何建议都将不胜感激。绑定事件处理程序时DOM尚未完全加载。在绑定DOM之前,必须确保已加载DOM,如下所示:
$(document).ready(function(){
$('.linkclass').click(function() {
id = $(this).attr('id');
event.preventDefault();
$.ajax({
url: "/controller_name/action_name/" + id,
type: "GET",
success: function (data) {
// call my modal pop-up
$( "#dialog" ).dialog();
}
});
});
});
发布按钮所在的html。我发布了模式html。另一个视图代码似乎与问题无关(只是简单的文本)。但是,如果我需要在页面中发布整个视图,我会。头js和css文件非常长。ajax调用是如何触发的?有提交按钮吗?这是一个jQuery点击事件。我刚刚添加了启动单击事件的HTML中的链接的代码。我使用的是link_to方法。由于您使用javascript处理链接,请尝试将第二个参数“/controller_name_name_name/action_name/#{product.id}”更改为“javascript:;”。这看起来像是一个提交,并将刷新页面,除非您指定javascript将覆盖它。