Railsã§ajaxãªã¯ã¨ã¹ããäºéã«éä¿¡ããã¦ãã¾ã
ãã©ã¼ã ããajaxéä¿¡ããéã«ãéä¿¡ãã¿ã³ã2åæ¼ãã¦ããããã§ã¯ãªãã®ã§ããããªããæ¯å2åãªã¯ã¨ã¹ããéä¿¡ããã¦ãã¾ãã¾ããajaxéä¿¡ã¯ä»¥ä¸ã®ãããªæã(ä¸é¨æç²)ã§ãã£ã¦ãã¾ãã
<%= form_tag(:action => :scan, :data-remote => true, :data-type => :html, :id => "my_form") do %> <%= text_field_tag 'name' %> <%= submit_tag "submit" %> <%- end -%>
def scan render :layout => false end
$(function(){ $("my_form").on('ajax:success', function(data, status, xhr) { $("#result_area").html(status); alert("Finish!"); //ãã¹ãç¨ }); });
ãããªæãã§ãã£ã¦ã¾ãããalertã®ã¦ã£ã³ãã¦ã2å表示ããã¦ãã¾ãã¾ããä»åã¯åç
§ã®ãªã¯ã¨ã¹ããªã®ã§ãã¾ãå½±é¿ã¯ãªãã§ããã©ããæ°æã¡æªãã
åå ã¯ï¼
ã¦ã§ãã§åããããªç¶æ³ãæ¢ãã¦ã¿ãã¨ãã¢ã»ãããã¤ãã©ã¤ã³ã®åãæ±ãã«ãã£ã¦(?) åãjavascriptãã¡ã¤ã«ãäºéã«èªã¿è¾¼ã¾ãã¦ãã¾ãã±ã¼ã¹ããããããã«ãã£ã¦1ã¤ã®è¦ç´ ã«å¯¾ãã¦.bindç³»ï¼.live ã¨ã .on ã¨ã .delegateï¼ãäºéã«ã»ããããã¦ãã¾ããã¨ãããã¨ãåå ã®ããã§ãã
èªåã®ã³ã¼ããè¦ç´ãã¦ã¿ã¦ãapplication.jsã®ä¸ã® //= require_tree . ãæ¶ãã¦1ã¤1ã¤ç´æ¥ååã§æå®ããããpublic/assetsãæ¶ããã(developmentã¢ã¼ã)ã¨è²ã
ãã£ã¦ã¿ãã®ã§ããããã¡â¦(x_x)
ãããã対ç
ããåãããªãã®ã§ãã¨ããããäºéã«ãªã¯ã¨ã¹ããé£ãã ã¨ãã«2åç®ã®å¦çããã£ã³ã»ã«ããã¨ãããããããå¼·å¼ãªæ¹æ³ã§å¯¾çãã¦ã¿ã¾ããã
- 1åç®ã®ajax:beforeSendãéä¿¡ãããæã«ãformè¦ç´ ã®å±æ§ã¨ãã¦'ajax-processing'ï¼ååã¯ãªãã§ãããã§ãï¼ããã£ã¤ãã¾ãã
- 2åç®ã®ajax:beforeSendã§ã¯formè¦ç´ ã®'ajax-processing'屿§ãã¿ã¦return false;ãã¦ä»¥éã®å¦çããã£ã³ã»ã«ãã¾ãã
- å¦ççµäºå¾ã«ajax:completeãéä¿¡ãããéã«'ajax-processing'屿§ãåãé¤ãã¾ãã
$(function(){ $("form[data-remote=true]").on( 'ajax:success', function(data, status, xhr) { if ($(this).attr('ajax-processing')) { return false; } else { $(this).attr('ajax-loading', true); } } ); $("form[data-remote=true]").on('ajax:complete', function() { $(this).removeAttr('ajax-processing'); } ); });
ãã¾ãæ ¹æ¬çãªè§£æ±ºã§ãªãã¨ããããã£ãããã¾ãããã1åããå¦çãããªããªã£ãã®ã§ä¸å¿ããã¨ãã¦ããã¾ãã