firefox和chrome中 JQuery的ajax组件执行差异
生活随笔
收集整理的這篇文章主要介紹了
firefox和chrome中 JQuery的ajax组件执行差异
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
最近做項目,發現了一個有意思的問題,自己解決不了,然后找別人一塊想,已解決; 問題為:一個post請求,在chrome正常執行;在firefox中無法執行(不報錯,只是請求失敗,后臺接受不到); 原代碼如下:
function addCustom(o) {var qy = o[0]["value"];// regionIdqy = qy.replace(" ", "");var glxs = o[1]["value"];//var km_ratio = o[2]["value"];if (km_ratio == "") {alert("請設置扣罰系數");return;} else if (qy == "") {alert("請設置扣罰區域");return;}if (jQuery.inArray(qy, regionArr) > -1) {alert("請勿重復添加自定義區域!");} else if (qy.length > 5 && qy.length < 8) {var num = (qy + "").substring(4);if (num != '00') {oilForm(km_ratio, qy);// 執行添加} else {alert("請選擇縣級區域!!");}} else {alert("請選擇縣級區域!!"); }location.href = '/monthTask/punish'; } /* * 添加自定義扣罰系數區域 */ function oilForm(km_ratio, qy) {var newPunish = {"regionId" : qy,"rate" : km_ratio}// 發送請求$.ajax({url : 'monthTask/punish',// 添加公里系數設置區域type : 'post',data : newPunish,dataType : "json",success : function(result) {alert("已成功添加");location.href = '/monthTask/punish';},error : function(data) {if (500 == data.status) {alert("系統異常,請稍后重試!");} else {location.href = '/monthTask/punish';}}});}- 分析:當執行addCustom方法,并執行到oilForm方法時,oilForm執行ajax方法,firefox沒有等到ajax請求執行完,就執行了頁面跳轉操作;
- 相關原理:chrome將ajax作為一般進程處理,而firefox將ajax作為后臺進程(daemon Thread)處理;
- 解決方案:在ajax請求之后不要進行其他的業務操作;將所有的相關邏輯都寫進ajax里; 修改后的addCustom方法
現在,當方法中執行到ajax請求時,其后面沒有任何邏輯操作;問題就解決了.
轉載于:https://my.oschina.net/u/1590027/blog/689686
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的firefox和chrome中 JQuery的ajax组件执行差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 针对访问控制列表ACL 与 基于角色的访
- 下一篇: test5