0

我在 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();
});
4

1 回答 1

1

根据ajaxSubmit文档,它接受与该jQuery.ajax方法相同的选项。因此,要获得响应,您可以将complete回调传递给调用:

var handleResponse = function(data) {
  // Use response here
};

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

根据您使用的 jQuery 版本,您还可以通过以下complete方法的返回值传递回调jQuery.ajax

$("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post'}).complete(function(data) {
  // Use response here
});
于 2012-10-07T15:54:03.580 回答