ajax跳转到新的jsp页面(局部刷新)

ajax可以实现局部刷新页面,即在不刷新整个页面的情况下更新页面的局部信息。

项目中遇到一个问题:在用户列表也,当点击某个按钮时需要去查询用户的信息,查询成功跳转到用户详情界面;查询失败,则在原页面弹出提示信息。

想到两个解决办法:

方法一:

点击按钮,调用普通方法去查询用户信息,查询成功跳转到用户详情页面;查询失败,重定向调用查询用户列表的方法,在查询用户列表的方法结束后重新跳转到用户列表页面并弹出提示信息,相当于重新加载了用户列表页面。

方法二:

根据需求,不可以重新加载用户列表页面。用ajax调用查询用户详情的方法,查询成功返回用户Json串,查询失败则返回error。

后台方法:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

@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, "查询用户失败");

        }   

  }

jsp页面的ajax:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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)错误案例:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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)想到的笨方法:在body中写隐藏的form表单,在回调函数中把查到的用户数据复制给form表单中的input,然后提交表单跳转到普通方法中,这样就是以post方法提交的数据,并且可以跳转到新页面了:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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

?


1

2

3

4

5

<body>

    <form id="userForm" action="" method="post">

        <input id="userFormJson" name="userFormJson" type="hidden"/>

    </form>

</body>

  

原文地址:https://www.cnblogs.com/jpfss/p/9517727.html

时间: 2024-10-07 14:52:45

ajax跳转到新的jsp页面(局部刷新)的相关文章

使用ajax与iframe嵌套实现页面局部刷新

使用ajax与iframe嵌套实现页面局部刷新.该javascript代码仅供参考,需按自己需要修改.?1. [代码]javascript代码 function cj_start(depname,groupid){    var urls = "<%=path%>/userGather.action";    var status = "";    var html_1 = "<iframe frameborder=\"0\&q

jquery实现页面局部刷新

后台管理中总是使用frameset进行分成部分进行管理,但是感觉很不好用,尤其是页面间调转还要判断window.parent,太令我费神了,于是学习使用XMLHttpRequest进行页面局部刷新.代码如下: Java代码   <html> <head> <script type="text/javascript"> window.onload = function(){ document.getElementById("email&quo

关于页面局部刷新例程

RS技术的一个具体例子 在前面的帖子中,我介绍了RS的基本工作原理,显然如果将RS技术运用在一个 网站的设计中将会有很多非凡的作用(尤其是它的那个最大的优点,可以在不刷新 页面的情况下调用服务端的代码).正是因为这个特点,你就可以象在编写一个 传统的C/S模式的程序一样,对数据库的数据进行处理了(我想大家一定很想知道具体应该如何来实现了,下面将给出一个具体的例子,调试这个破程序几乎快把我给累死,呵呵.) 从前面的描述可以看到,要使用RS技术就需要客户端和服务端满足下面两个条件: 1.客户端只需要

ajax 如何提交数据到后台jsp页面,以及提交完跳转到jsp页面

我logincheck.jsp页面取传参数代码: String user=request.getParameter("user1"); String pwd=request.getParameter("pwd1"); login.jsp input 取2参数何用ajax 传给logincheck.jsp ================================== $.ajax({ type : "POST", url : baseUrl

JSP页面自动刷新

1.页面自动刷新:把如下代码加入<head>区域中<meta http-equiv="refresh" content="20">,其中20指每隔20秒刷新一次页面. 2.页面自动跳转:把如下代码加入<head>区域中<meta http-equiv="refresh" content="20;url=http://www.abc.com">,其中20指隔20秒后跳转到http:

基于H5 pushState和Ajax完美实现页面局部刷新

众所周知使用Ajax可以局部刷新提高用户体验,然而url不跟随改变是其一大弊端. 如果修改浏览器地址栏的url,同时不刷新整个页面就完美了. 先来看看什么是pushState? 给history对象增加一个状态. window.history.pushState(stateData, 'title', 'newUrl'); // stateData用于事件参数 window.addEventListener('popstate', function(){ var state = window.h

利用ajax实现与php数据交互,并局部刷新页面

本文主要有以下几个要点: ajax的基本语法结构 jQuery基本语法 json数组基本结构 ajax回调函数中的json数组解析及局部刷新 php基本语法 ajax与php的对接 php中post数据提交方式与接收 ajax基本语法$.ajax({ type: "post", //数据提交方式(post/get) url: "demo.php", //提交到的url data: {username:username,password:password},//提交的

Webform——页面局部刷新

有一些数据控件,每次更改它的值后,都会重新查询数据库,然后再重新显示出来. 这样每次都会刷新全部页面,如果是一些信息量很庞大的页面,就会出现卡顿的现象,为了避免这种情况,就用到了局部刷新. 所用到的控件为:AJAX扩展里面的ScriptManager和UpdatePanel.    ScriptManager就是封装好的JS代码,可以直接拿来用.    UpdatePanel,要局部刷新的部分放在这里面去. 在这张图片里,省市区三个下拉列表就被放在了UpdatePanel里面,从而实现了局部刷新

AjaxAnyWhere 实现页面局部刷新

这个比较jquery.单纯ajax异步简单多了,不多说了直接上代码. 需要引入:ajaxanywhere-1.2.1.jar (最新)和 /ajaxAnyWhereDemo/WebRoot/js/aa.js  ,免费下载地址http://download.csdn.net/detail/xuke6677/8064977 目录结构如下: 1.ListBean.java 实体类    <strong><span style="font-family:System;font-size