我在Rails控制器和JS文件之间来回发送信息。
我通过JS(作品)将表单发送给控制器
$("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post' });
我能够在控制器(工作)中捕获事件
def send_help_email
....
end
在发送上述请求的同一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();
});
答案 0 :(得分:1)
根据ajaxSubmit
documentation,它接受与jQuery.ajax
method相同的选项。因此,要获得响应,您可以将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
});