原文: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. iframe获取元素

    原生js在网页中,父元素获取iframe中的元素: window.onload=function () { 例如: console.log(window.frames["iframe的nam ...

  2. Ubuntu18.04上安装java

    安装java8 sudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-j ...

  3. Python图表数据可视化Seaborn:4. 结构化图表可视化

    1.基本设置 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns ...

  4. 069 在SparkStreaming的窗口分析

    一:说明 1.图例说明 ---------------------------------------------------------------------------------------- ...

  5. 2018-03-11 20165235 祁瑛 Java第二周考试总结

    20165235 祁瑛 Java第二周考试总结 课后习题p16 代码编写 class Person { void speakHello (){ System.out.print("nin h ...

  6. Codeforces 854C Planning 【贪心】

    <题目链接> 题目大意: 表示有n架飞机本需要在[1,n]时间内起飞,一分钟只能飞一架.但是现在[1,k]时间内并不能起飞,只能在[k+1,k+n]内起飞.ci序号为i的飞机起飞延误一分钟 ...

  7. 按键排序JavaScript对象

    问题描述 我需要按键排序JavaScript对象. 因此如下: { 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' } 会成为: { 'a' : ' ...

  8. 洛谷P3375 [模板]KMP字符串匹配

    To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...

  9. 2017-9-10-Vim使用说明

    首先,很多linux发行版直接进入的是vi,不是vim,刚开始使用vi会有点蒙,需要改一下配置文件到vim:"打开vi编辑器,输入i,左下角没有出现-INSERT-字样,且编辑模式跟vim不 ...

  10. 【整理】Java 10新特性总结

    Java 9才发布几个月,很多玩意都没整明白,Java 10就来了..这时候我真尼玛想说:线上用的JDK 7 ,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK 10……刚学Java的 ...