1

我注意到,当我使用 Rails UJS 表单进行 AJAX 提交时,只有在服务器返回 HTTP 成功(2xx)时才会评估 Javascript 响应,如果服务器返回状态码 4xx 或 5xx,则不执行任何操作。

我想修改此行为,以便即使服务器返回 HTTP 错误也会评估 Javascript 响应。我正在考虑将我的表单与事件绑定ajax:error,但是我必须为我的应用程序中的每个 AJAX 表单执行此操作。任何人都知道如何在全球范围内做到这一点?

还有一个问题:我可以通过 JQuery 检查服务器返回的内容类型是否为 Javascript 吗?

谢谢!

4

1 回答 1

1

由于所有 Rails UJS 处理程序都需要定义 data-remote="true",因此您可以通过执行全局绑定到 ajax:error 事件

$('[data-remote="true"]').on('ajax:error', my_special_error_callback);

然后,您需要确保定义回调以检查错误代码:

function my_special_error_callback(event, data, status, xhr) {
    if(status == 'error') {
    alert('error');
    responseText =  JSON.parse(data.responseText)["errors"] // This is dependent on how you're returning your errors from Rails
}
于 2013-05-22T00:37:06.460 回答