今回は、リクエストを送信しても成功にならないAjaxを実装する方法と、リクエストを送信しても成功にならない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 型の場合object、フロントエンドの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' }); } });
特殊なケース: バックエンドによって返される JSON 番号が次のような場合"1" 、 "2"、 "22"、 "232123"、 "-1"、 "232123.44" 数値 文字列 が設定されている場合、フロントエンドの dataType 属性が に設定されている場合、正常に成功メソッドを入力できますjson 理由は不明です。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 推奨読書:Ajax とフォームを使用して登録ユーザーに必要な機能を実装する
Ajax を使用して WeChat Web ページの承認されたログインを実装する手順 (コード付き)
以上がリクエストを送信しても成功しないように Ajax を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。