1

Rails UJSフォームを使用してAJAX送信を行うと、サーバーがHTTP成功(2xx)を返した場合にのみ、Javascript応答が評価され、サーバーがステータスコード4xxまたは5xxを返した場合は何も行われません。

サーバーがHTTPエラーを返した場合でも、Javascriptの応答が評価されるように、この動作を変更したいと思います。フォームをイベントにバインドすることを考えてajax:errorいますが、アプリケーション内にあるすべてのAJAXフォームに対してこれを行う必要があります。誰かがこれをグローバルに行う方法を知っていますか?

もう1つの質問:サーバーから返されるコンテンツタイプがJQueryを介してJavascriptであるかどうかを確認できますか?

ありがとう!

4

1 に答える 1

1

すべてのRailsUJSハンドラーで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 に答える