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: },
]];
};
//最后一行为点击待审核的一个按钮,先查出指定的数据并将数据放入域中跳转页面;

-----java后台跳转的页面-----

*
* @author xl
* @Date // : 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 == ''){ }}
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">待审核...</a>
{{# } else if(d.status == ''){ }}
<a class="layui-btn layui-btn-primary layui-btn-xs" style="background: lightgreen">审核通过</a>
{{# } else if(d.status == ''){ }}
<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': '', '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': '', '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);
}
});
});
});

关注秦川以北会有更多精彩!!!

发送ajax请求时候注意的问题的更多相关文章

  1. 在发送ajax请求时加时间戳或者随机数去除js缓存

    在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...

  2. 原生js发送ajax请求

    堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...

  3. jQuery发送ajax请求

    利用jquery发送ajax请求的几个模板代码. $.ajax({ async : false, type: 'POST', dataType : "json", url: &qu ...

  4. JQuery发送ajax请求不能用数组作为参数

    JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){        var select ...

  5. js中使用队列发送ajax请求

    最近,项目中需要按照先后顺序发送ajax请求,并且在一次请求结束后才能发起下一次,不然就会导致逻辑错误. 解决办法是定义一个数组,保存ajax请求数据. 以下使用extjs4定义一个类 Ext.def ...

  6. IE6下a标签上发送ajax请求总是error

    IE6下真是处处是坑啊!!!走过了一个又一个坑,记录一下吧. 之前不知道a标签上注册click事件之后,发送ajax请求总是error.后来经过几番网上搜索,终于找到高人遇到此坑的解决办法.原来是a标 ...

  7. Jquery发送ajax请求以及datatype参数为text/JSON方式

    Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...

  8. 【liferay】1、使用alloy-UI发送ajax请求

    1.首先liferay要发送ajax请求,那么就需要在jsp中定义resourceURL <portlet:resourceURL var="workDeal" id=&qu ...

  9. Axios发送AJAX请求

    目录 Axios 特征 axios提供主要三种发起请求的方式 方式一:直接axios实例直接call方式 方式二:通过axios实例提供的不同http请求方式的方法 方式三:其实是从第二种方式中单独提 ...

  10. 接入天猫精灵auth2授权页面https发送ajax请求

    已存在一个应用A,采用的是http交互, 在接入天猫精灵时,要求请求类型是https,所以在应用服务前加了个nginx转发https请求.在绑定授权页面,会发送ajax请求验证用户名和密码,采用htt ...

随机推荐

  1. 使用@AutoConfigureBefore、After、Order调整Spring Boot自动配置顺序

    前言 Spring Boot是Spring家族具有划时代意义的一款产品,它发展自Spring Framework却又高于它,这种高于主要表现在其最重要的三大特性,而相较于这三大特性中更为重要的便是Sp ...

  2. Java集合类初探

    目录 概述 Iterable和Iterator Collection List Queue Set Map 概述   Java中基本的常用的集合类,主要包含: List Set Queue Map 这 ...

  3. 主题博客添加 h5 贴边音乐插件

    前言: 前几日,在逛微博的时候,发现微博主页的左下角有一个贴边的音乐小插件,我顿时就想在自己博客上也弄一个玩玩.当时就想把微博那个移植过来,首先我用谷歌浏览器F12 查看页面源码,和检查元素代码,发现 ...

  4. linux专题(五):常用的基本命令(三)文件内容查看

    http://dwz.date/UDf 概述 Linux系统中使用以下命令来查看文件的内容: cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! n ...

  5. 微信小程序wx.switchTab跳转到tab页面后onLoad里面的方法不执行

    相信大家在做小程序的时候启动页跳转到tab首页会用到switchTab 但是在跳转后发现页面模块不全,后面console.log()后发现是onLoad里面的方法不执行 解决这种问题的方法页有很多中, ...

  6. Swift开发笔记

    Swift开发笔记(一) 刚开始接触XCode时,整个操作逻辑与Android Studio.Visual Studio等是完全不同的,因此本文围绕IOS中控件的设置.事件的注册来简单的了解IOS开发 ...

  7. MVC + EFCore 项目实战 - 数仓管理系统4 – 需求分解

    上次课程我们完成了项目基本的UI风格配置. 现在就开始进入我们的需求开发,我们先捋一下需求. 一.总体需求说明 项目背景第一篇文章已有介绍,我们回顾一下. 这是一个数据管理"工具类" ...

  8. 直接在x86硬件上显示图片(无os)

    1 任务 为了学习计算机底层和os,我给自己布置了一个任务:在x86硬件上,使用c和nasm来显示一张bmp图片.完成这个任务,前后估计花了2个月的业余时间. 这个任务涉及了很多知识点,包括:启动区. ...

  9. 三面拿杭州研究院50offer:面对这些问题,你都能做到嘛??

    5G的到来证明了互联网行业发展一如既往的快,作为一名开发人员(Java岗)梦想自然是互联网行业的大厂,这次我的一个学员拿到了杭州的一个研究院offer,透露一下,年薪50多万,保底16,在这里分享一拨 ...

  10. PHPExcel将Excel数据导入数据库

    <?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...