這次帶給大家AJAX的Get請求在微信返回上一頁中無效,解決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 { //方法体 }
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是AJAX的Get請求在微信回上上一頁無效的詳細內容。更多資訊請關注PHP中文網其他相關文章!