首先描述一下问题场景:我们正在做一个汽车出租项目,使用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异步请求的一个细节问题的更多相关文章

  1. ajax异步请求

    做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...

  2. spring HandlerInterceptorAdapter拦截ajax异步请求,报错ERR_INCOMPLETE_CHUNKED_ENCODING

    话不多说,直接上正文. 异常信息: Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING 问题描述: 该异常是在页面发送ajax请 ...

  3. jquery Ajax异步请求之session

    写了一个脚本,如下: $(function () { $("#btnVcode").click(function () { var receiveMobile = $(" ...

  4. ajax异步请求Response.Redirect重定向

    一个ajax异步请求报错->捕获异常->重定向错误提示页面.  一个简单的流程 结果一直搞不定.重定向无效.各种百度之. 后来突然想起 ajax的请求是不能在后台重定向的. 如果硬要重定向 ...

  5. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  6. MVC&WebForm对照学习:ajax异步请求

    写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...

  7. AJAX异步请求原理和过程

    AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它不是一种新的编程语言,而是一种使用现有标准的新方法. AJAX 基于 JavaS ...

  8. Ajax异步请求-简单模版

    <script type="text/javascript"> window.onload = function () { document.getElementByI ...

  9. art.dialog 与 ajax 异步请求

    上周写了一些代码,涉及到jquery异步请求,这里归纳总结下,希望对刚接触编程的同学有帮助. 主要习惯使用 art.dialog 框架,非常好用,在异步请求上,它提供了很多简便的方法. 加载使用art ...

随机推荐

  1. 《收获,不止SQL优化》读书笔记

    整体性能分析 AWR.ASH.ADDM.AWRDD 整体分析调优工具 AWR:关注数据库的整体性能的报告: ASH:数据库中的等待事件与哪些SQL具体对应的报告: ADDM:oracle给出的一些建议 ...

  2. 2018.12.1 万圣节的小L

    我回来啦 试题描述 今天是万圣节,小L同学开始了一年一度的讨要糖果游戏,但是在刚刚过去的比赛中小有成就的他打算给自己增加一点难度:如果没有讨到每一家的糖果就算输. 已知小L共有n(n不大于10000) ...

  3. Java中实现线程的方式

    Java中实现线程的方式 Java中实现多线程的方式的方式中最核心的就是 run()方法,不管何种方式其最终都是通过run()来运行. Java刚发布时也就是JDK 1.0版本提供了两种实现方式,一个 ...

  4. 自动化冒烟测试 Unittest , Pytest 哪家强?

    前言:之前有一段时间一直用 Python Uittest做自动化测试,觉得Uittest组织冒烟用例比较繁琐,后来康哥提示我使用pytest.mark来组织冒烟用例 本文讲述以下几个内容: 1.Uni ...

  5. django基础知识之视图:

    视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图:

  6. c++ 函数知识点汇总

    c++ 函数知识点汇总 swap函数 交换两个数组元素 比如 swap(a[i],a[j]); 就是交换a[i] 和 a[j] 的值 strcpy() 复制一个数组元素的值到另一个数组元素里 strc ...

  7. 1. Django每日一码 之原生View源码

    2019-7-4  今日源码:原生 View 1.URL中调用as_view方法 def as_view(cls, **initkwargs): """ Main ent ...

  8. infiniband 网卡驱动安装

    硬件:Mellanox InfiniBand,主要包括 HCA(主机通道适配器)和交换机两部分软件:CentOS 6.4MLNX_OFED_LINUX-2.1-1.0.0-rhel6.4-x86_64 ...

  9. 【并查集】连接格点-C++

    连接格点 描述 有一个M行N列的点阵,相邻两点可以相连.一条纵向的连线花费一个单位,一条横向的连线花费两个单位.某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通. 输入 第一 ...

  10. 客户端远程调用Feign

    客户端远程调用 Feign 什么是Feign? Feign是 Netflix 公司开源的声明式HTTP客户端 Github : Feign 源码 为什么需要Feign? 原代码可读性不高 复杂的URL ...