簡體   English   中英

Rails 3遠程表單不觸發回調

[英]Rails 3 remote form not triggering callback

我有一個由AJAX請求由jQuery填充的遠程表單。 然后,我將此表單綁定到AJAX回調,但是未觸發該回調。

var msgSuccess=function(evt, data, status, xhr){
  alert('ok!!!');
  console.log(evt);
  console.log(data);
  console.log(status);
  console.log(xhr);
}

var bindMsg = function() {   // BIND IT TO THE CALLBACKS
  $("#composeMsgPopup")
  .live('ajax:beforeSend', loadingCallback)
  .live('ajax:success', msgSuccess)
  .live('ajax:error', failureCallback)
  .live('ajax:complete',completeCallback);
}

$.ajax({      // GETTING THE FORM CODE
  url: link,
  type: "get",
  success: function(response, textStatus, jqXHR) {
    ans=response;
    $("#popup_content").html(ans);
    $("#popup").bPopup();
    bindMsg();
  },
  error: function(jqXHR, textStatus, errorThrown) {
    failureCallback(errorThrown, textStatus, jqXHR);
  },
  complete: function(jqXHR, textStatus) {
    completeCallback("", jqXHR, textStatus);
  },
  beforeSend: loadingCallback
});

表單的代碼:

<%= form_for(:conversation, :remote => true, 
 :url=> {:controller=>:conversations,:action=>:create},
 :html=>{:id => 'composeMsgPopup' }) do |f| %>
<div id="founder-name" class="field"><b>Recipient: <%= @user.name %></b></div>
<div class="field">
  <%= f.label :subject,"Subject" %>
  <%= f.text_field :subject,:class=>"composeMsgField" %>
</div>
<div class="field">
  <%= f.label :content,"Message Content" %>
  <%= f.text_area :content,:class=>"composeMsgField" %>
</div>
<%= f.hidden_field :to_user, :value => @user.id  %>
<%= f.submit "Send", :class=>"submitbt",:id=>'sendMessage' %>
<% end % >

我試圖用bind()或on()綁定,但是它不起作用。 代碼已執行,但是當我提交表單時,回調未執行。

好的,我找到了解決方案。 遠程表單未出於未知原因觸發回調,所以我所做的是更改“提交”按鈕的行為:

     <%= f.button :submit, "Update",:class=>"submitbt",:id=>"submitnewpass",:onclick=>"return false;" %>

並綁定按鈕以手動提交表單

 var action=$('#composeMsgPopup')[0].action;   // action url
$("#sendMessage").click(function() {         // bind submit button

    $.ajax({
        type: "POST",
        url: action,
        data: $("#submitnewpass").serialize(), // serializes the form's elements.
        success: function(data)
        {
           // do my stuff

        },
        error:      failureCallback,
        beforeSend: loadingCallback,
        complete:   completeCallback
    });

    return false;
});

暫無
暫無

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

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