Dojo初探之5:dojo的request(请求)操作、请求过程事件绑定和隐藏数据data()操作(基于dojo1.11.2版本)
前言:
上一章详细阐述了dojo的事件绑定操作,本章将讲解dojo的请求操作
注:dojo的请求操作与js和jquery完全不同!
1、dojo的请求
dojo通过request.get()/.put()/.post()/.del()进行请求操作
request.post("这里放对应的请求接口地址", {
//解析服务器json数据
handleAs: "json",
// 直接从form表单取json对象作为参数
data: domForm.toObject("formNode"),
// 超时时间
timeout: 2000
}).then(function(response) {
//正确获得服务器响应后的操作
dom.byId('svrMessage').innerHTML = JSON.stringify(response);
});
2、请求的过程中可以绑定不同操作
//请求过程事件绑定
require(["dojo/dom", "dojo/request", "dojo/request/notify",
"dojo/on", "dojo/dom-construct", "dojo/query",
"dojo/domReady!"
],
function(dom, request, notify, on, domConstruct) {
//开始
notify("start", function() {
domConstruct.place("<p>开始</p>", "divStatus");
});
//发送
notify("send", function(data, cancel) {
domConstruct.place("<p>发送请求</p>", "divStatus");
});
//请求成功
notify("load", function(data) {
domConstruct.place("<p>加载完毕</p>", "divStatus");
});
//请求失败
notify("error", function(error) {
domConstruct.place("<p class=\"error\">加载失败</p>", "divStatus");
});
//已经完成之后
notify("done", function(data) {
domConstruct.place("<p>请求结束 (response processed)</p>", "divStatus");
if (data instanceof Error) {
domConstruct.place("<p class=\"error\">响应失败</p>", "divStatus");
} else {
domConstruct.place("<p class=\"success\">响应成功</p>", "divStatus");
}
});
//停止
notify("stop", function() {
domConstruct.place("<p>请求停止</p>", "divStatus");
domConstruct.place("<p class=\"ready\">准备</p>", "divStatus");
});
on(dom.byId("test"), "click", function(evt) {
//清空id为divStatus内部元素
domConstruct.empty("divStatus");
request.get("getTime", //请求地址
{
query: this.id = "successbtn",
handleAs: "json" //返回的是json数据
}).then(function(data) {
//发送请求成功后的操作
alert("获取成功" + data.data);
//发送请求失败后的操作
}, function(error) {
alert("获取失败" + error);
});
});
}
);
3、与jquery相似,dojo也提供隐藏数据的data()操作
要进行data()操作必须引入NodeList-data和NodeList-manipulate模块
如下所示
var NodeList = require(["dojo/NodeList-data", "dojo/NodeList-manipulate", "dojo/domReady!"], function(NodeList) {
//设置隐藏数据
function setData(node) {
query(node).data("updated", new Date());
}
//获取隐藏数据
function getData(node) {
var str = query(node).data("updated");
console.log(str);
}
到这里dojo的常用操作部分基本讲解完毕了,dom操作可以操作页面增删改,事件绑定操作处理事件绑定,本章请求处理用于处理get/post/put/delete四种请求,普通页面操作基本都可以做到了,后面如果发现前面漏掉的地方将会进一步进行补充。
接下来将开始dojo的高级部分学习
Dojo初探之5:dojo的request(请求)操作、请求过程事件绑定和隐藏数据data()操作(基于dojo1.11.2版本)的更多相关文章
- Dojo初探之3:dojo的DOM操作、query操作和domConstruct元素位置操作(基于dojo1.11.2版本)
前言: 前面两章讲了dojo的基本规范和配置,当然这个配置不是必须的,当你有这需求的时候就可以用到dojo的config配置. dojo的所有js都是符合AMD规范进行异步加载的:http://blo ...
- Dojo初探之4:dojo的event(鼠标/键盘)事件绑定操作(基于dojo1.11.2版本)
前言: 上一章详解了dojo的dom/query操作,本章基于dom/query基础上进行事件绑定操作 dojo的事件 dojo的事件绑定操作分为鼠标和键盘两种进行详解 1.鼠标事件 我们沿用上一章中 ...
- Dojo初探之2:设置dojoConfig详解,dojoConfig参数详解+Dojo中预置自定义AMD模块的四种方式(基于dojo1.11.2)
Dojo中想要加载自定义的AMD模块,需要先设置好这个模块对应的路径,模块的路径就是这个模块的唯一标识符. 一.dojoConfig参数设置详解 var dojoConfig = { baseUrl: ...
- Dojo初探
Dojo 是一个由 Dojo 基金会开发的 Javascript 工具包, 据说受到 IBM 的永久支持,其包括四个部分: dojo, dijit, dojox, util dojo: 有时也被称作 ...
- dojo事件驱动编程之事件绑定
什么是事件驱动? 事件驱动编程是以事件为第一驱动的编程模型,模块被动等待通知(notification),行为取决于外来的突发事件,是事件驱动的,符合事件驱动式编程(Event-Driven Prog ...
- Configuring Dojo with dojoConfig - The Dojo Toolkit
转载自Dojo官网 Configuring Dojo with dojoConfig The dojoConfig object (formerly djConfig) allows you to s ...
- dojo/Deferred类和dojo/promise类的使用
参考博客:https://blog.csdn.net/blog_szhao/article/details/50220181 https://dojotoolkit.org/docume ...
- (ExtJs 3.4)Ext.Ajax.request的同步请求实现
ext3.0之前都是这样来提交:var responsea = Ext.lib.Ajax.getConnectionObject().conn;responsea.open("POST&qu ...
- Volley(二)—— 基本Request对象 & RequestQueue&请求取消
详细解读Volley(一)—— 基本Request对象 & RequestQueue&请求取消 Volley它非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作, ...
随机推荐
- 关于Java内存管理的几个小技巧
这里将介绍几则Java内存管理的小技巧,让你让你从Java入门开始告别陋习,为Java程序提速.有不少人都说"Java完了,只等着衰亡吧!",为什么呢?最简单的的例子就是Java做 ...
- .net Framework 4.5 新特性async(异步)的初步认识
1.async的简单说明 继版本4.5以前,要想实现异步方法,运用多线程齐头并进.而4.5直接一个async修饰的方法配合await实现异步,这里的底层实现原理暂时未研究, 应该本质都一样,对线程的操 ...
- Set ,List,ArrayList,LinkedList,Vectory,HashMap,Hashtable,HashSet,TreeSet,TreeSet
Set与List区别: 两者都是接口,并继承Collection接口:List有序,允许重复:Set无序,不能重复: ArrayList与LinkList区别: ArrayList是动态数组,查询效率 ...
- Mobile game analysis
Let's take a look at a very popular mobile game "Garena 传说对决" . It would be very interesti ...
- linux 安装memcached C/C++使用libmemcached库(续)
#include <iostream> #include <string> #include <libmemcached/memcached.h> using na ...
- IE报vuex requires a Promise polyfill in this browser问题解决
使用Vuex, IE浏览器报错 因为使用了 ES6 中用来传递异步消息的的Promise,而IE低版本的浏览器不支持. ##解决方法 第一步: 安装 babel-polyfill . babel-po ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 C - Monkey and Banana
https://vjudge.net/contest/68966#problem/C [参考]http://blog.csdn.net/qinmusiyan/article/details/79862 ...
- crontab定时任务不执行的原因
1.重启crontab若是遇见"You (cloudlogin) are not allowed to use this program (crontab) ...
- 走进javascript——类型
ECMAScript语言类型对应于使用ECMAScript语言的ECMAScript程序员直接操作的值.ECMAScript语言类型有以下几种Undefined,Null,Boolean,String ...
- jgs--多线程和synchronized
多线程 多线程是我们开发人员经常提到的一个名词.为什么会有多线程的概念呢?我们的电脑有可能会有多个cpu(或者CPU有多个内核)这就产生了多个线程.对于单个CPU来说,由于CPU运算很快,我们在电脑上 ...