zoukankan      html  css  js  c++  java
  • 微信返回上一页,页面中的AJAX的请求,对Get请求无效的解决办法

    问题产生原因
          最近在做一个微信的项目时,遇到一种很常见的情况,需求是这样的,当用户进入到“我的个人中心”的时候,会有一个点击跳转填写认证资料的按钮,点击此按钮后,会跳转到认证资料填写页面,填写资料,提交成功后。当用户直接返回到上一页的时候。需要修改认证状态为“认证中”。此时需要使用一个AJAX方法去查询认证状态,并修改页面的状态显示。
    当时没有按照标准的方法写ajax方法,默认使用的方法是Get请求,前台JS代码如下:
    window.onload = function(){
       var isProfesser=$('#isProfesser').val();
       var isreview=$('#isreview').val();
       var userid=$('#myId').val();
       if(isProfesser=='0' && isreview=='0'){
          $.ajax({
             url:"/isAuthenticing",
             data: {userid:userid},
             success: function (data, textStatus, jqXHR) {
                if(data.result=='1'){
                   $('#approveadd a').html("+认证中")
                }
             },
             error: function () {
             }
          });
       }
       //getMyQusetionInfo();
    }
     后台controller默认接收的也是GET
    @RequestMapping(value = "/isAuthenticing", method = RequestMethod.GET)
    @ResponseBody
    public Map<String, Object> isAuthenticing(@RequestParam("userid") String userid,HttpServletRequest request) throws IOException {
    //方法体;
    }
     
    解决办法   
          实践证明使用Get方法式是不行的,每次后退到上一页的时候,页面中的ajax方法会照常执行,但是并不会请求后台的controller,请求返回的值也是上一次加载页面时候的值,具体原因我暂时不明确。
    后来抱着试一试的心态 我使用可POST请求,出人意料的是 使用POST请求,真个流程就走通了。
    前台JS代码如下:
    window.onload = function(){
       var isProfesser=$('#isProfesser').val();
       var isreview=$('#isreview').val();
       var userid=$('#myId').val();
       if(isProfesser=='0' && isreview=='0'){
          $.ajax({
             url:"/isAuthenticing",
             data: {userid:userid},
             type: 'POST',
             success: function (data, textStatus, jqXHR) {
                if(data.result=='1'){
                   $('#approveadd a').html("+认证中")
                }
             },
             error: function () {
             }
          });
       }
       //getMyQusetionInfo();
    }
    后台代码:
    @RequestMapping(value = "/isAuthenticing", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> isAuthenticing(@RequestParam("userid") String userid,HttpServletRequest request) throws IOException {
    //方法体
    }
    希望能够帮助那些和我遇到同样问题的人。
    注:红色部分为修改的部分
     
     

    结语
     如果你还需要了解更多技术文章信息,请继续关注白衣秀才的博客
     个人网站:http://penglei.top/
     Github:https://github.com/whitescholars
     微博:http://weibo.com/u/3034107691?refer_flag=1001030102_&is_all=1
     
     
  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/penglei-it/p/wechat.html
Copyright © 2011-2022 走看看