2014-09-27 43 views
1

我相信這是一個簡單的解決方案,但它讓我瘋狂。我有一個Ruby on Rails應用程序,我正在對jQuery按鈕單擊事件的控制器操作進行簡單的AJAX調用,以便在成功提交時提交數據並啓動模式彈出窗口。見下面的代碼。頁面繼續在Ruby on Rails中使用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相關的HTML(模態div和鏈接HTML)。

<%= 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也是在針對這一工作正常。但是,當我將此JavaScript代碼(不包括腳本標記)放在單獨的Javascript文件中時,它會在單擊鏈接時刷新頁面。一切都提交罰款,但頁面重新加載/刷新,我不希望它重新加載。當我將它放在單獨的文件中時,是否忘記添加額外的代碼?單獨的js文件位於assets/javascript文件夾中,幷包含在HTML中(我在查看源中看到它),所以這不是問題。

任何意見,將不勝感激。

+0

發佈該按鈕所在的html。 – 2014-09-27 00:18:34

+0

我發佈了模態HTML。其他視圖代碼似乎與問題無關(只是簡單的文本)。但是,如果我需要在頁面中發佈整個視圖,我會。這只是頭js和css文件很長。 – thenextmogul 2014-09-27 00:23:53

+0

ajax調用如何被觸發?有沒有提交按鈕或什麼? – 2014-09-27 00:24:52

回答

2

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

哇,這工作!謝謝! – thenextmogul 2014-09-27 00:37:20

+1

不客氣!樂於幫助! – Stiliyan 2014-09-27 00:38:40

+2

非常漂亮。 – 2014-09-27 00:39:20

相關問題