原文: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. ELK安装(ubuntu)

    一.安装jdk8 经过我测试logstash5.x不支持java10和11,所以安装java8 加入LinuxUprising Java PPA sudo add-apt-repository ppa ...

  2. 数仓1.4 |业务数仓搭建| 拉链表| Presto

    电商业务及数据结构 SKU库存量,剩余多少SPU商品聚集的最小单位,,,这类商品的抽象,提取公共的内容 订单表:周期性状态变化(order_info) id 订单编号 total_amount 订单金 ...

  3. Kafka-API

    ctrl+Hnew 它的实现类ctrl+r替换格式化ctrl+alt+l ctrl+fctrl+alt+v 替换 &lt " &lt < &gt > Ka ...

  4. SVM:SVM之Classification根据已有大量数据集案例,输入已有病例的特征向量实现乳腺癌诊断高准确率预测—Jason niu

    load BreastTissue_data.mat n = randperm(size(matrix,1)); train_matrix = matrix(n(1:80),:); train_lab ...

  5. poj 1966(求点连通度,边连通度的一类方法)

    题目链接:http://poj.org/problem?id=1966 思路:从网上找了一下大牛对于这类问题的总结:图的连通度问题是指:在图中删去部分元素(点或边),使得图中指定的两个点s和t不连通  ...

  6. webstorm离线装载Material Theme UI

    首先说说需求,由于直接用webstorm听说VS挺火的,但是初恋的感觉是其他任何编辑器无法替代的 瞎说了一些话,新公司内网开发,用的是vscode,但是我还是喜欢用webstorm,连不上网,所以不能 ...

  7. [OC] 杂项

    使用JSONModel的一个好处是,可以防止 [数据是NSNULL的时候,OC无法直接通过if(XX)来判空 ]引起的错误. 字符串与字符串对比不要使用 str1 != str2 这种写法,而用 ![ ...

  8. Redis自学笔记:4.2进阶-过期时间

    4.2过期时间 **4.2.1命令介绍* 在redis中使用 expire 命令设置一个键的过期时间后redis会自动删除它. expire key seconds (seconds单位是秒,必须是整 ...

  9. LR逻辑回归文章

    http://blog.csdn.net/suipingsp/article/details/41822313

  10. BZOJ.3453.tyvj 1858 XLkxc(拉格朗日插值)

    BZOJ 题意即求\[\sum_{i=0}^n\sum_{j=1}^{a+id}\sum_{x=1}^jx^k\] 我们知道最后一个\(\sum\)是自然数幂和,设\(f(n)=\sum_{x=1}^ ...