JavaScript AJAX和Rails控制器(来回)

问题描述 投票:0回答:1

我正在Rails控制器和JS文件之间来回发送信息。

  1. 我正在通过JS将表单发送给控制器(工作)

    $("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post' });
    
  2. 我能够在控制器中捕获事件(有效)

    def send_help_email
      ....
    end
    
  3. 在发送上述请求的同一JS文件中,如何捕获JSON响应(如下)? (无效)

    def send_help_email
      ...
      cst_str = @current_support_ticket.to_s
      respond_to do |format|
        format.json { render :json => cst_str }
      end
    end
    

    在JS文件中

    var xmlhttp = new XMLHttpRequest();
    alert(xmlhttp.responseText);
    

更新

我注意到一个阻止成功的JS错误:函数无法执行:

错误

TypeError:'undefined'不是一个函数(评估'$(“#help-email- form”)。ajaxSubmit({url:'/ help / send_help_email',type:'post',complete:handlerResponse})' )

这是触发错误的行

$("#help-email-form").ajaxSubmit({url: '/help/send_help_email', type: 'post', complete: handlerResponse })

这是完整的块

var handlerResponse = function(data) {
alert(data);
};

$('#help-email-submit').live('click', function(e) {
    $('#sender-email-wrapper').fadeOut('fast', function() {
        $("#help-email-sent").fadeIn('slow');
    });
    $("#help-email-form").ajaxSubmit({url: '/help/send_help_email', type: 'post', complete: handlerResponse })
    e.preventDefault();
});
javascript ruby-on-rails ruby ruby-on-rails-3 jquery-events
1个回答
1
投票

根据ajaxSubmit documentation,它接受与ajaxSubmit相同的选项。因此,要获得响应,可以将jQuery.ajax method回调传递给调用:

jQuery.ajax

根据所使用的jQuery版本,您还可以通过complete的返回值通过var handleResponse = function(data) { // Use response here }; $("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post', complete: handleResponse }); 方法传递回调。

complete
© www.soinside.com 2019 - 2024. All rights reserved.