关于ajax异步请求的一个细节问题
首先描述一下问题场景:我们正在做一个汽车出租项目,使用maven+ssm+easyui来完成,这个问题是在做汽车办理出租业务的时候出现的。
问题描述:在使用ajax发送异步请求时,遇到一个问题,就是在回调函数中接受到了异步响应的数据,但是在前端页面中的表单中却不回显该数据。
下面请看问题代码:
/* 办理出租业务 */
function rentCars(value){
/* 获取选中的行 */
var row = $("#dgCarRents").datagrid("getSelected");
if(row){
url="saveRents";
/* 清空表单数据 */
$("#fm").form('clear');
/* 禁止在下面这些文本框中输入 */
$("#rentid").textbox('textbox').attr('readonly',true);
$("#price").textbox('textbox').attr('readonly',true);
$("#ident").textbox('textbox').attr('readonly',true);
$("#carnumber").textbox('textbox').attr('readonly',true);
$("#opername").textbox('textbox').attr('readonly',true);
/* 异步提交到后台,获取数据 */
$.post('genRentCode',function(data){
/* 将数据加载至form表单 */
/* $("#fm").form('load',data); */
row['rentid']=data.rentid;
row['opername']=data.opername;
/* $("#fm").form('load',row); */
});
/* 将身份证号放到row中 */
row['identity']=$("#identity").val();
/* 打开对话框 */
$("#dlgRentCar").dialog('open').dialog('setTitle','办理出租');
/* 将json对象row中的数据加载至表单 */
$("#fm").form('load',row);
}
}
请注意这里:

前端页面显示:

发现就只有identity所对应的数据显示了,而opername和rentid所对应的数据都没有显示,可是我明明已经在函数的最后一行将json对象row中的所有数据全部都加载到表单中了,但是表单为什么没有显示呢?带着这个问题,我试了一下老师的方法:

注意:这里直接将后台数据直接加载至表单时,异步响应回来的json对象data的键(key)值一定要与表单中文本框的name属性所对应的值一样,否则数据加载不到表单中。
前端页面:

rentid和opername全部都加载出来了。
问题解析:1.一开始,我的回调函数中,只有往json对象中赋值的语句;2.在回调函数中没有往表单中加载数据的代码;3.我发送的是异步请求,那也就是说,对话框中的表单,是在异步响应到达之前,将数据回显的。
得出结论:在异步响应到达之后(在这个案例中,异步响应是在 表单回显完数据之后 到达的),需要将数据再次加载到form表单中。
如果还不理解,那么除了上述写法之外还可以这样写:

这个方法也是可以的,看到了吧,老师是直接将异步响应回来的数据加载到表单的所以不会出现问题,而我居然想试图通过赋值的方法将数据加载到表单,但是却不在回调函数中加入将异步响应回来的数据加载至表单的代码,而是只有赋值到json对象的语句,虽然我在最后将异步响应回来的数据加载至表单,但是这样导致的结果就是:对话框中的表单只加载了非异步响应回来的数据,而异步响应回来的数据因为是异步的,所以在表单回显完数据之后,异步响应回来的数据才发送到前端,json对象row才接受到赋值,此时如果没有再次将数据加载至表单,那么表单中就会没有这异步响应回来的数据。
再次总结一下前端获取数据的过程:前端页面在 第一次加载数据的同时 发送异步请求,但是 这个 异步响应 是在 页面加载完数据之后 到达的,因此在 异步响应 到达之后(这时表单数据已加载完毕) 需要第二次将数据加载到表单中(将 异步响应回来的数据 加载至表单)。
关于ajax异步请求的一个细节问题的更多相关文章
- ajax异步请求
做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...
- spring HandlerInterceptorAdapter拦截ajax异步请求,报错ERR_INCOMPLETE_CHUNKED_ENCODING
话不多说,直接上正文. 异常信息: Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING 问题描述: 该异常是在页面发送ajax请 ...
- jquery Ajax异步请求之session
写了一个脚本,如下: $(function () { $("#btnVcode").click(function () { var receiveMobile = $(" ...
- ajax异步请求Response.Redirect重定向
一个ajax异步请求报错->捕获异常->重定向错误提示页面. 一个简单的流程 结果一直搞不定.重定向无效.各种百度之. 后来突然想起 ajax的请求是不能在后台重定向的. 如果硬要重定向 ...
- jquery的ajax异步请求接收返回json数据
http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...
- MVC&WebForm对照学习:ajax异步请求
写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...
- AJAX异步请求原理和过程
AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它不是一种新的编程语言,而是一种使用现有标准的新方法. AJAX 基于 JavaS ...
- Ajax异步请求-简单模版
<script type="text/javascript"> window.onload = function () { document.getElementByI ...
- art.dialog 与 ajax 异步请求
上周写了一些代码,涉及到jquery异步请求,这里归纳总结下,希望对刚接触编程的同学有帮助. 主要习惯使用 art.dialog 框架,非常好用,在异步请求上,它提供了很多简便的方法. 加载使用art ...
随机推荐
- HDU 3062:Party(2-SAT入门)
http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文. 思路:裸的2-SAT.判断二元组的两个人是否在同一个强连通分量. 学习地址:http://w ...
- Java设计模式学习笔记(一) 设计模式概述
前言 大约在一年前学习过一段时间的设计模式,但是当时自己的学习方式比较低效,也没有深刻的去理解.运用所学的知识. 所以现在准备系统的再重新学习一遍,写一个关于设计模式的系列博客. 废话不多说,正文开始 ...
- web前端css(一)
一 css的引入方式: 1) 行内样式: <p style=”color: green”>我是一个段落</p> 2) 内接样式: <style ty ...
- Requests方法 -- 项目实现自动发送邮件
"""1.discover方法里面有三个参数:-case_dir:这个是待执行用例的目录.-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开 ...
- 2018年东北地区赛S - Problem I. Spell Boost HDU - 6508
题目地址:https://vjudge.net/problem/HDU-6508 思路:给一些卡,分为四种卡.1.白卡(没效果)2.魔法,作用卡(会对作用卡的费用减少,也会被魔法卡作用)3.作用卡(会 ...
- Yii basic 模板支持连接多数据库
1.首先修改db配置文件,修改格式如下: return [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:hos ...
- 用Supervisor实现进程守护,在异常退出时自动重启
程序启动后,有些是以daemon的形式运行,但在意外退出后,如果不能及时重新启动,会有比较严重的影响. 比如Zimg在图片处理中由于某些图片处理失败,会导致zimg进程挂掉,影响正常的服务提供,并且只 ...
- Excel中PMT函数的Java实现
public class PMT { /** * * 计算月供 * * @param rate * 年利率 年利率除以12就是月利率 * @param nper * 贷款期数,单位月 该项贷款的付款总 ...
- 【UR #7】水题走四方 题解
链接:http://uoj.ac/problem/84 20分算法:萌萌的小爆搜,别搜进环里就行. 50分:我们考虑一下最优决策是什么样的.看似很显然的一点就是我们先让本体在原地不动,让分身去遍历子树 ...
- C语言指针专题——指针怎么就很灵活?
最近在研读 C Primer pkus(第五版)中文版,老外写的还是很经典的,推荐给朋友们,购买地址:C primer plus 5版中文版购买 另外再推荐两本书: 1. 2017年9月全国计算机二级 ...