dojo 十 ajax dojo/_base/xhr
官方教程:Ajax with Dojo
Ajax功能:
1.从服务器加载静态数据
2.从web服务中访问xml或json类型的数据
3.将表单(form)数据发送到服务器
4.刷新页面内容
。。。。
Ajax在RIA中是核心技术,下面来看看Dojo是如何运用它的。
// Require the xhr module
require([
"dojo/_base/xhr"
,
"dojo/dom"
],
function
(xhr,dom) {
// Local var representing the node to be
updated
var
availabilityNode =
dom.byId("availabilityNode"
);
// Using xhr, as very little information is being sent
xhr.get({
// The URL of the request
url:
"check-username.php"
,
// Allow only 2 seconds for username
check
timeout: 2000,
// Send the username to check base on an INPUT
node's value
content: {
username:
dom.byId(
"usernameInput"
).value.toLowerCase()
},
// The success callback with result from
server
load:
function
(result)
{
if
(result ==
"available"
) {
availabilityNode.innerHTML =
"Username available!"
;
}
else
{
availabilityNode.innerHTML =
"Username taken! Please try another."
;
}
},
// The error
handler
error: function(errorMessage){
alert(errorMessage);
}
,
// The complete handler
handle:
function
()
{
hasBeenSent =
true
;
}
});
});
首先要引入包dojo/_base/xhr。
然后通过调用xhr.get或xhr.post这两个常用的方法来发送请求。
这两个方法的参数是一个对象,包含以下属性:
url:请求的服务器地址
handleAs:返回数据的格式,默认为"text",可选"json","javascript"(加载并执行),"xml"
timeout:请求超时,以毫秒记算,当超过这个时间视为请求失败并触发error处理函数
content:请求时发送的内容,是一个“键-值”对形式的对象。如果调用的是get方法,会被转换为一个字条串,如果是post方法,则转换为post内容体。
form:指定一个表单节点对象,将会发送表单内所有的数据,此时如果没有指定url,将会采用form属性action的值,如果同时设置content将会覆盖form中的内容,不建议同时使用
当服务器接受到请求并做出回应后,可以通过以下三个方法来处理:
load(response,
ioArgs):请求成功时的回调函数,第一个参数就是根据handleAs指定的格式返回的数据内容。
error(errorMessage)
:请求失败时的回调函数,数据为失败的信息
handle(response, ioArgs)
:不论成功或失败都将调用的回调函数
根据请求是否成功,首先会调用load/error函数,然后调用handle
JSON数据结构
JSON是以“键-值”对为单位的数据结构,如{"name":"mqsy_yj",
"age":30,"ismale",true},键为"name",值为"mqsy_yj"。
“键-值”对之间用逗号分隔,大括号为一个JSON对象,多个JSON对象用逗号分隔并包含在一个中括号内为一个JSON对象数组。
在dojo中对JSON的处理方法为:
require(["dojo/_base/array"],function(array){
var jsonData = {"newsItems":[{"name":"mqsy_yj",
"age":30,"ismale",true},{"name":"mqsy_yj1", "age":31,"ismale",false}]};
var
content =
""
;
// For every news item we
received...
arrayUtil.forEach(jsonData.newsItems,
function
(newsItem) {
// Build data from the JSON
content +=
"<h2>"
+ newsItem.name+
"</h2>"
;
content +=
"<p>"
+ newsItem.age+
"</p>"
;
content +=
"<p>"
+ newsItem.ismale+
"</p>"
;
});
});
dojo 十 ajax dojo/_base/xhr的更多相关文章
- dojo(四):ajax请求
储备知识 1.在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds. 初次听到“Deferred”这个概念,可能会觉得这是一个神秘的东西.实际上它在执行异步操作的时候非常强大,例 ...
- dojo 九 effects dojo/_base/fx 和 dojo/fx
官方教程:Dojo Effects这里讲学习一下dojo如何实现淡入.淡出.滑动等效果.实现这些特殊的效果有两个包 dojo/_base/fx 和 dojo/fx.dojo/_base/fx 中提供了 ...
- dojo 官方翻译 dojo/_base/array 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/_base/array.html#dojo-base-array array模块dojo进行 ...
- Dojo API中文 Dojo内容模块概览,初学者
官网:http://dojotoolkit.org/reference-guide/1.10/dojo/index.html#dojo-dojo的翻译 dojo 内容: dojo dojo/dojo ...
- dojo 官方翻译 dojo/aspect
官网地址:http://dojotoolkit.org/reference-guide/1.10/dojo/aspect.html after() 定义:after(target, methodNam ...
- dojo.publish 和 dojo.subscribe
原文链接:http://www.cnblogs.com/didi/archive/2010/06/13/1757894.html //dojo.publish 和 dojo.subscribe :d ...
- dojo.byId、dojo.query、dojo.attr
概述: dojo.byId(/*string*/id或/*DomNode*/node) 1.传入DOMNode返回传入的domNode; 2.传入id返回id为当前值的domNode dojo.que ...
- dojo.js --dojo Quick Start/dojo入门手册1
我看了http://www.cnblogs.com/mylem/archive/2009/11/11/1600984.html这篇博客以后 ,就开始设计自己的代码,其实很多解释都是在我的代码里,所以就 ...
- Dojo入门:dojo中的事件处理
JS为DOM添加事件 在原生的环境下,为DOM添加事件处理函数有多种方法: <input type="button" name="btn" value ...
随机推荐
- javascript与DOM -- 深入理解javascript
/* 一.文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API */ /* 注 ...
- WinForm-利用Anchor和Dock属性缩放控件
转自:http://www.cnblogs.com/tianzhiliang/articles/2144692.html 有一点让许多刚接触WinForms编程的开发者感到很棘手,就是在用户调整各种控 ...
- Poj2420 A Star not a Tree? 模拟退火算法
题目链接:http://poj.org/problem?id=2420 题目大意:每组数据中给n个点(n<=100),求平面中一个点使得这个点到n个点的距离之和最小. 分析:一开始看到这个题想必 ...
- 【BZOJ】【1044】【HAOI2008】木棍分割
二分/DP 真是一道好题! 第一问很简单的二分…… 第二问一开始我想成贪心了,其实应该是DP的= = 然后没有注意……又MLE又TLE的……这题要对DP进行时空两方面的优化!! 题解:(by JoeF ...
- 【POJ】【2104】区间第K大
可持久化线段树 可持久化线段树是一种神奇的数据结构,它跟我们原来常用的线段树不同,它每次更新是不更改原来数据的,而是新开节点,维护它的历史版本,实现“可持久化”.(当然视情况也会有需要修改的时候) 可 ...
- Spring Mail
想必大家在今天这个特殊的日子里,一定热血沸腾了一把.为上午的阅兵点70个赞! 进入Spring Mail的主题: 前后大概花了8个小时的时间来研究Spring封装的javaMail.本来觉得挺简单的应 ...
- mongo二维数组操作
有2个嵌套的数组: 如果我想查询comments里score大于5的记录: testProvider.find({"comments.score":{"$gt" ...
- JS模板引擎 :ArtTemplate (2)
上一篇初略的介绍了一下javascript中的模板引擎,有兴趣的可以戳 这里 . 这一篇将带着大家一起做一个简易的模板引擎, 上一篇介绍到:模板引擎其实做的就是两件事. 根据一定的规则,解析我们所定义 ...
- CSRF(跨站请求伪造)攻击方式
一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...
- 帝国cms栏目别名如何调用?
我们在用帝国cms建站时经常会发现栏目的标题不好设置,栏目名称太长的话在后台那边看了眼花,太短又不好优化.能不能直接调用栏目别名呢?栏目别名不会什么影响.那么,帝国cms栏目别名怎么调用呢?和ytka ...