簡體   English   中英

在Ruby on Rails應用程序中,頁面不斷通過AJAX調用重新加載

[英]Page keeps reloading with AJAX call in Ruby on Rails App

我確信這是一個簡單的解決方案,但它使我發瘋。 我有一個Ruby on Rails應用程序,通過該應用程序,我對jQuery按鈕單擊事件上的控制器操作進行了簡單的AJAX調用,以提交數據並在成功提交時啟動模式彈出窗口。 請參見下面的代碼。

<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>

視圖中與此問題相關的唯一HTML如下(模態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>

當我在視圖中使用Javascript並且頁面無法重新加載時,此代碼可以完美地工作。 但是,當我將此Javascript代碼(減去script標簽)放置在單獨的Javascript文件中時,單擊鏈接時它將刷新頁面。 一切提交正常,但頁面重新加載/刷新,我不希望它重新加載。 將代碼放在單獨的文件中時,是否會忘記在代碼中添加其他內容? 單獨的js文件位於assets / javascript文件夾中,並且包含在HTML中(我在查看源代碼中看到了它),所以這不是問題。

任何意見,將不勝感激。

綁定事件處理程序時,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();
      }
      });
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM