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