新しい JSP ページにジャンプするための Ajax の実装方法

黄舟
リリース: 2017-11-01 10:02:42
オリジナル
2552 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート