ここで、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"; }
理由: で返された json データ背景が純粋な String 型オブジェクトである場合、フロントエンドの dataType 属性が 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' }); } });
特殊なケース: バックエンドが「1」、「2」、「22」、「232123」、「-1」、「232123.44」などの数値文字列を使用する場合、フロントエンドの dataType 属性が に設定されていると正常に成功メソッドを入力できます。 json 理由は不明です。
上記は私があなたのためにまとめたものです。関連記事:
struts2およびajaxデータインタラクション(グラフィックチュートリアル)ネイティブAjax(グラフィックチュートリアル)によって書かれたパルアップロードの例以上がAjax リクエストは正常に送信されるが失敗する場合の解決策 (画像とテキストのチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。