發送ajax請求時候注意的問題


1.在發送ajax請求一般都是默認為異步,就是不去等待后台響應直接可以繼續發送,

但這樣會有時候遇到一些問題,無法獲得后台的響應參數,

所以在你打開編輯彈出框完成數據編輯后無法刷新頁面,

這時候可能存在的問是

(1)跨域

(2)網絡延遲未獲取響應數據

(3)加載的仍然是緩存中的數據,無法刷新

(4)瀏覽器插件攔截

 

解決問題思路:

跨域:

可以使用后台解決或者前台解決解決方式不細說百度下

網絡延遲未獲取到響應數據:

可以在ajax中將異步請求修改為同步(操作看以下示例)

緩存問題:

可以清除本地瀏覽器緩存

瀏覽器插件:

將可翻牆的或者安裝的瀏覽器插件關閉

 

工作中遇到的示例(折磨好久):

1.實現的功能

使用layui將展示的數據進行審核

點擊待審核:

備注審核的內容手動審核通過還是未通過

修改狀態后的效果

前端思路:

首先編寫一個layui的點擊按鈕,layui需要在展示欄中引入一個參數

 

這是layui的一個初始化列表:

-----examine.js文件中的初始化列表-----

/**
     * 初始化表格的列
     */
    Examine.initColumn = function () {
        return [[
            {type: 'checkbox'},
            {field: 'accountid', hide: true, sort: true, title: '商戶id'},
            {field: 'acname', sort: true, title: '商戶名稱'},
            {field: 'type', hide:true, sort: true, title: '審核類型'},
            {field: 'baltype', sort: true, title: '審核類型'},
            {field: 'money', sort: true, title: '金額'},
            {field: 'actualmoney', sort: true, title: '實際提現'},
            {field: 'commission', sort: true, title: '手續費'},
            {field: 'beforechange', sort: true, title: '變動前金額'},
            {field: 'afterchange', sort: true, title: '變動后余額'},
            {field: 'createtime', sort: true, title: '提交時間'},
            {field: 'updatetime', sort: true, title: '更新時間'},
            {field: 'status', hide:true, sort: true, title: '審核狀態'},
            {field: 'dicstatus', sort: true, title: '審核狀態'},
            {field: 'receivabletype',hide:true, sort: true, title: '收款方式'},
            {field: 'receiv', sort: true, title: '收款方式'},
            {field: 'remark', sort: true, title: '備注'},
            {toolbar: '#tableBar', title: '審核', minWidth: 100},
        ]];
    };
//最后一行為點擊待審核的一個按鈕,先查出指定的數據並將數據放入域中跳轉頁面;

-----java后台跳轉的頁面-----

*
     * @author xl
     * @Date 2018/12/23 4:56 PM
     */
    @RequestMapping("/examine_update/{id}")
    public String accountUpdate(@PathVariable String id, Model model) {
​
        if (ToolUtil.isEmpty(id)) {
            throw new RequestEmptyException();
        }
        //緩存部門修改前詳細信息
        AcBalanceChange acBalanceChange = acBalanceChangeService.selectByPrimaryKey(Integer.parseInt(id));
        model.addAllAttributes(BeanUtil.beanToMap(acBalanceChange));
        LogObjectHolder.me().set(acBalanceChange);        
        return PREFIX + "examine_edit.html";
    }
​

-------examine.html主頁面-------

//js是根據id關聯的
<script type="text/html" id="tableBar">
// 這個script 是layui的判斷要顯示的按鈕,根據后台的狀態值去判斷的
    {{#  if(d.status == '4'){ }}
            <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">待審核...</a>
    {{#  } else if(d.status == '2'){ }}
            <a class="layui-btn layui-btn-primary layui-btn-xs" style="background: lightgreen">審核通過</a>
    {{#  } else if(d.status == '3'){ }}
            <a class="layui-btn layui-btn-primary layui-btn-xs" style="background: #CD808C">審核未通過</a>
    {{#  } }}
</script>

--------examine_edit.html文件--------

@layout("/common/_container.html",{bg:"bg-white",js:["/assets/modular/system/examine/examine_edit.js"]}){
<form id="examineForm" lay-filter="examineForm" class="layui-form model-form">
    <input name="id" id="bcid" value="${id}" placeholder="" type="hidden" class="layui-input" lay-verify="required" required/><div class="layui-form-item">
        <label class="layui-form-label">備注<span style="color: red;">*</span></label>
        <div class="layui-input-block">
            <input id="remark" name="remark" placeholder="備注" type="text" class="layui-input" lay-verify="required" required/>
        </div>
    </div><div class="layui-form-item text-right">
        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        <button class="layui-btn" id="adopt" lay-submit>通過</button>
        <button class="layui-btn" id="notadopt" lay-submit>未通過</button>
    </div>
</form>
@}

------examine_edit.js文件------

//此時我要綁定兩個ajax請求來修改編輯的內容
layui.use(['layer', 'form', 'admin', 'ax'], function () {
    var $ = layui.jquery;
    var $ax = layui.ax;
    var form = layui.form;
    var admin = layui.admin;
    var layer = layui.layer;
​
    // 讓當前iframe彈層高度適應
    admin.iframeAuto();
​
    $("#adopt").click(function (data) {
        //選中對象的id
        var id = $("#bcid").val();
        var remark = $("#remark").val();
        console.log(remark)
        $.ajax({
            url: Feng.ctxPath + "/examine/update",
            data: {'id': id, 'status': '2', 'remark': remark},
            type: "Post",
            async: false,//關閉異步請求
            dataType: "json",
            //傳給上個頁面,刷新table用
            success: function (data) {
                console.log(data + "========")
                Feng.success("審核成功!");
                admin.putTempData('formOk', true);
                // window.parent.location.reload();
                //關掉對話框
                admin.closeThisDialog();
            },
            error: function (data) {
                $.messager.alert('錯誤', data.msg);
            }
        });
    });
​
    $("#notadopt").click(function (data) {
        //選中對象的id
        var id = $("#bcid").val();
        var remark = $("#remark").val();
        console.log(remark)
        $.ajax({
            url: Feng.ctxPath + "/examine/update",
            data: {'id': id, 'status': '3', 'remark': remark},
            type: "Post",
            async: false,//關閉異步請求
            dataType: "json",
            success: function (data) {
                console.log(data + "========")
                Feng.success("審核成功!");
                //傳給上個頁面,刷新table用
                // window.parent.location.reload();
                admin.putTempData('formOk', true);
                //關掉對話框
                admin.closeThisDialog();
            },
            error: function (data) {
                $.messager.alert('錯誤', data.msg);
            }
        });
    });
});

關注秦川以北會有更多精彩!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM