ホームページ >ウェブフロントエンド >jsチュートリアル >新しい JSP ページにジャンプするための Ajax の実装方法
ajax はページを部分的に更新できます。つまり、ページ全体を更新せずにページの部分的な情報を更新します。
プロジェクトで問題が発生しました。ユーザー リストでボタンをクリックすると、クエリが成功するとユーザーの詳細インターフェイスにジャンプします。元のページにプロンプトメッセージがポップアップ表示されます。
私は 2 つの解決策を考えました:
方法 1:
ボタンをクリックして、ユーザー情報をクエリするための通常のメソッドを呼び出します。クエリが成功した場合は、ユーザーの詳細ページにジャンプします。クエリが失敗した場合、リダイレクト呼び出しはユーザー リスト メソッドをクエリすることになります。ユーザー リストをクエリするメソッドが終了した後、ユーザー リスト ページに戻り、プロンプト メッセージをポップアップ表示します。これは、ユーザー リスト ページをリロードするのと同じです。
方法 2:
要件に従って、ユーザーリストページをリロードできません。 ajax を使用してユーザーの詳細をクエリするメソッドを呼び出します。クエリが成功すると、ユーザーの Json 文字列が返されます。クエリが失敗すると、エラーが返されます。
バックエンドメソッド: JSPページの
@RequestMapping(value = "searchUser") public void searchHome(HttpServletResponse response){ String result = null; ... 查询用户的方法 ... if(查询成功){ result = JsonUtil.objectToJson(查询结果对象);//结果对象转化成Json字符串,在ajax的结果中跳转到用户详情的处理方法 AjaxUtil.ajax(response,result); }else{//查询失败,返回提示信息 AjaxUtil.error(response, "查询用户失败"); } }
ajax:
function searchUser(){ $.ajax({ url : "testurl/searchUser", cache : false, type : 'POST', data : { 查询用的数据,比如用户ID }, success : function(data) { var obj = eval("("+data+")"); if(obj.success==undefined){//查询成功,跳转到详情页面 ... 跳转到用户详情处理方法,将date数据传过去 ... }else if(!obj.success){//查询失败,弹出提示信息 weui.Loading.info(obj.message); } }, error : function(error) { weui.alert("查询用户有误!"); } }); }
ここでの焦点は、ajaxのコールバック関数で通常のメソッドを呼び出し、以前にクエリされたユーザーデータを通常のメソッド(上記)に渡す方法です。疑似コードの赤い部分)を選択し、ユーザー詳細ページにジャンプします。
(1) エラーのケース:
function searchUser(){ $.ajax({ url : "testurl/searchUser", cache : false, type : 'POST', data : { 查询用的数据,比如用户ID }, success : function(data) { var obj = eval("("+data+")"); if(obj.success==undefined){//查询成功,跳转到详情页面,encodeURIComponent编码是为了防止url后面传送的参数中文乱码,在后台处理时需要解码 window.location.href = "testurl/userForm?userJson="+encodeURIComponent(data); }else if(!obj.success){//查询失败,弹出提示信息 weui.Loading.info(obj.message); } }, error : function(error) { weui.alert("查询用户有误!"); } }); }
エラーの理由: window.location.href メソッドは get メソッドであるため、ブラウザの URL に表示されるパラメータは安全ではありません、データ送信の長さは制限されています。
(2) 思いつく愚かな方法: 本体に隠しフォームを書き、見つかったユーザーデータをコールバック関数でフォームの入力にコピーし、フォームを送信して通常のメソッドにジャンプする、これは post メソッドで送信されたデータであり、新しいページにジャンプできます:
function searchUser(){ $.ajax({ url : "testurl/searchUser", cache : false, type : 'POST', data : { 查询用的数据,比如用户ID }, success : function(data) { var obj = eval("("+data+")"); if(obj.success==undefined){//查询成功,跳转到详情页面 $("#userFormJson").val(data); $("#userForm").attr("action","testurl/userForm"); $("#userForm").submit(); }else if(!obj.success){//查询失败,弹出提示信息 weui.Loading.info(obj.message); } }, error : function(error) { weui.alert("查询用户有误!"); } }); }
JSP ページの本文
<body> <form id="userForm" action="" method="post"> <input id="userFormJson" name="userFormJson" type="hidden"/> </form> </body>
以上が新しい JSP ページにジャンプするための Ajax の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。