この記事は主に、Ajax リクエストが正常に送信されるが成功に入らないという問題の解決策を説明します。これは良い参考値であり、皆さんに役立つことを願っています。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
1. 状況の説明: Ajax は正常に送信され、バックグラウンドも正常にリクエストに応答し、JSON データを返します。Chrome 経由でリクエストを監視することでも、応答の JSON データを確認できますが、成功メソッドには入りません。 、ただし、エラー メソッドに進みます。
フロントエンド:
$.ajax({ type : "get", data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()}, url : "${ctp}/ViewOperate/ShowViewSql", dataType : "json", success : function(data){ console.log(data); layer.alert(data,{ skin: 'layui-layer-molv' }); } error : function(data){ layer.alert("进入了error方法",{ skin: 'layui-layer-molv' }); } });
バックエンド:
@RequestMapping(value="/ShowViewSql",method=RequestMethod.GET) @ResponseBody public String showCreateViewSql(@RequestParam(value="dbId",required=false)Integer dbId, @RequestParam(value="viewId",required=false)Integer viewId) { return "abc"; }
原因: フロントエンドの dataType 属性が設定された後、バックグラウンドによって返された json データが純粋な String 型オブジェクトである場合。 jsonに変換した場合、Stringオブジェクトで変換されたjsonデータ形式は標準のjson形式ではないとみなされるため、エラーに該当するメソッドを実行してください。
解決策: バックエンドを変更する必要はありません。フロントエンドの Ajax リクエストの dataType 属性を text に設定するだけです
$.ajax({ type : "get", data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()}, url : "${ctp}/ViewOperate/ShowViewSql", dataType : "text", success : function(data){ console.log(data); layer.alert(data,{ skin: 'layui-layer-molv' }); } error : function(data){ layer.alert("进入了error方法",{ skin: 'layui-layer-molv' }); } });
特殊なケース: バックエンドによって返された JSON 番号が「1」、「2」、 "22" 、 "232123"、 "-1"、 "232123.44" 数値文字列を使用する場合、フロントエンドの dataType 属性が json に設定されている場合は正常に成功メソッドを入力できます。理由は不明です。
関連する推奨事項:
Ajax バックグラウンド成功から送信された JSON データの問題の簡単な分析
ThinkPHP ページジャンプの成功とエラー方法の概要_PHP チュートリアル
以上がAjaxリクエストの送信は成功したが失敗する場合の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。