2016-06-02 8 views
0

問題ではなく情報的な問題が解決する必要があります。他の場所で満足な答えが見つかりませんでしたJQuery ajaxコールは無効なJSONを受け取りますが、エラーハンドラは呼び出されません

私はJQuery/JSを使い慣れていません。レールバックエンドへのAJAX呼び出しのエラーハンドラをテストしようとしています。私はハンドラーに火をつけて時間を割いた。

  1. バックエンドに500とスタックトレースを返すようにしましたが、ハンドラは起動しませんでした。コンソールにVM26658:1 Uncaught SyntaxError: Unexpected token S in JSON at position 0と表示されます。
  2. 私は、JSONレスポンスと400個のステータス
私は最終的に(形成されるがウェル)、空を返すことによって発射するハンドラを得た不正なリクエストのステータスと空の応答を返してみましたが、同じエラーや行動
  • これは、Ajaxエラーハンドラはレスポンスボディを解析できないときに起動しないようです。あれは正しいですか?もしそうなら、それはハンドラロジックのかなり実質的で直観的な制限のように思えます。そうでなければ、私はどうやって愚かなのですか?

    ありがとうございます! HAMLでコード

    更新:CoffeeScriptので

    = simple_form_for @object, method: :put, url: setup_object_path, remote: true |f| 
    = f.input :some_input 
    = f.submit, class: 'js-submit' 
    

    $(document).on 'ajaxStart', startFunction 
    $(document).on 'ajaxError', errorFunction 
    $(document).on 'ajaxComplete', completeFunction 
    

    結果: startFunctionすべての3例について火災、しかしerrorFunctioncompleteFunctionのみ火災のためのケース#3

    で直接js-submitにバインドしようとしましたが、同じ結果が出ました。

  • +1

    パースエラーがAJAXエラーハンドラをトリガする助けに感謝して申し訳ありません。関連コードを表示してください。これはまた、リクエストが 'jsonp'ではないと仮定しています – charlietfl

    +0

    は、コード例で更新されました。 – toppy42

    +0

    hamlの参照は私に何の意味もないことを恐れています。リクエストはすべて、そこに存在するものだけを知っているブラウザで作成されます – charlietfl

    答えて

    0

    問題が見つかりました。私のコードベースの誰かが、を使用したajax:errorへの文書レベルのバインディングを持っていました。有効なJSONでなかったものは、爆発し、他のすべてのエラー処理を停止していました。

    混乱と `dataType`が設定され、および/または正しいContent-Typeヘッダがサーバーに設定されている場合

    関連する問題