原文:https://www.cnblogs.com/fullstack-yang/p/6115983.html

doSubmit: function(){
var dtd = $.Deferred();
$.ajax({
url: url,
type: 'post',
data: $("#fm").serialize(),
dataType: 'html'
}).then(function(data){
dtd.resolve(data);
}, function(){
toastr.error("提交失败", "操作失败");
dtd.reject();
});
return dtd.promise();
},

这样就可以将data数据继续传递至调用该方法接下去执行的then()方法的回调函数中了。

-----------------------------------------------------------------

我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块。基本的方法如下。

 1 doSubmit: function(){ 
3 return $.ajax({
4 url: url,
5 type: 'post',
6 data: $("#fm").serialize(),
7 dataType: 'html'
8 }).then(function(data){
9 toastr.error(" 提交成功", "操作成功");
10 }, function(){
11 toastr.error("提交失败", "操作失败");
12 });
13}, 在这里对于返回的对象,可以在其他调用此方法的方法中如下处理:
this.doSubmit().then(function(data){
console.log(data)
});
但在这里仅仅会进行打印,可是并不会是从服务器端传回的data,为了使这个data值能够传递至下面我们调用的地方,我们可以对上面的doSubmit做一点小小的处理,
这里我选择方法是采用$.Deferred(),有关于这个相关的概念和功能用法等可以参考阮一峰老师的博文已经阅览官方文档,这里就不一一介绍了。
对doSubmit()方法等改造如下:
doSubmit: function(){
var dtd = $.Deferred();
$.ajax({
url: url,
type: 'post',
data: $("#fm").serialize(),
dataType: 'html'
}).then(function(data){
dtd.resolve(data);
}, function(){
toastr.error("提交失败", "操作失败");
dtd.reject();
});
return dtd.promise();
},

这样就可以将data数据继续传递至调用该方法接下去执行的then()方法的回调函数中了。


[转]jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据的更多相关文章

  1. jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据

    我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块.基本 ...

  2. jquery异步ajax超大长度base64图片长字段数据传输问题解决办法和php后台处理办法

    2017年5月9日19:25:02 在做在线签名的时候,到了图片上传的时候,使用jquery异步ajax上传base64的图片数据的时候,使用默认的方式进行数据传输偶尔会出现 生产的图片只有上半部分, ...

  3. 使用ajax与服务器通信的步骤

    使用ajax与服务器通信的步骤: 1. 创建一个XMLHttpRequest对象 2. 创建url,data,通过xmlHttpRequest.send() 3. 服务器端接收ajxa的请求,做相应处 ...

  4. http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

    http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)    建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成 ...

  5. [转]jquery的ajax交付时“加载中”提示的处理方法

    本文转自:http://www.educity.cn/wenda/77121.html jquery的ajax提交时“加载中”提示的处理方法    方法1:使用ajaxStart方法定义一个全局的“加 ...

  6. Ajax 与服务器通信 验证编号重复

    在最近的一个Web项目中,需要实现一个功能,就是用户在前端输入一个编号,后台需要验证这个编号是否在数据库中已经存在,如果存在就提示用户. 主要用到两个模块.第一:在jsp中添加一个脚本,利用ajax向 ...

  7. JQuery和Ajax在ASP.NET MVC中的基本应用

    当我们在开发Web应用程序中使用JQuery和Ajax异步调用来实现很多功能时,不仅提高了程序的性能,而且给用户一个更好的交互式界面操作体验.接下来我们依旧用简单的实例来学习下它们的应用. 创建一个A ...

  8. AIDL通信过程中设置死亡代理

    关于AIDL的使用参考学习: https://blog.csdn.net/u011240877/article/details/72765136 https://blog.csdn.net/iromk ...

  9. jquery的ajax提交时“加载中”提示的处理方法

    方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){    $("#loading").ajaxStart(function(){    ...

随机推荐

  1. 浏览器iscroll

    ::-webkit-scrollbar{width:4px;height:4px;background:transparent}::-webkit-scrollbar-track{background ...

  2. Codeforces 542E Playing on Graph 其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF542E.html 题目传送门 - CF542E 题目传送门 - 51Nod1481 题意 有一幅无向图,它有 ...

  3. redics在windows平台下的使用

    https://www.cnblogs.com/ding2011/p/4745732.html 一::下载    windows 下的redis: https://github.com/Service ...

  4. 线段树-hdu3397

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3397 题目描述: 题目大意:给我们一串二进制串,需要我们对其进行以下操作: 1.输入0,a,b,将a, ...

  5. NP:建立可视化输入的二次函数数据点集np.linspace+np.random.shuffle+np.random.normal

    import numpy as np import matplotlib.pyplot as plt def fix_seed(seed=1): #重复观看一样东西 # reproducible np ...

  6. Java的运算符

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.下面介绍JAVA中的运算符: (1)算术运算符: 单目:+(取正) -(取负) ++(自增1) --(自减1) 双目:+ - * / % ...

  7. bootstrap panel如何实现可拖动并排序

    Draggable Panels Bootstrap test  如果是使用bootstrap的panel请严重注意class = row 与class = col-....等的嵌套,要不然排序会出问 ...

  8. Yolov3参数解释以及答疑

    目录 参数解析 训练答疑 ​ 参数解析 [net] #Testing #batch=1 //test:一次一个图片 #subdivisions=1 #Training batch=32 //一次迭代送 ...

  9. Android 简历 怎么写? 月薪10K,20K+, 怎么拿到面试?

    估计不少找Android工作的,技术还可以,就是投简历,没有面试通知.很有可能是简历的问题. 那么我这里有一些简历,可以参考. 其中也有我的, 月薪20K+的哦,  参考一下,会有你的面试的. 额, ...

  10. 潭州课堂25班:Ph201805201 django 项目 第三十一课 在线课堂视频点播的实现(课堂笔记)

    在线课堂 一.数据库模型设计 # 在apps/course/models.py中定义如下模型: from django.db import models from utils.models impor ...