ajax arcengine,ArcGIS客户端开发学习笔记(一)—AJAX机制

摘要:AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML)。现在的GIS客户端编程都是基于Ajax技术的。我觉得Ajax最大的特点在于它提供了更好的用户体验。以往的Web开发,当用户填完表单后点击“提交”按钮,整个页面都会回送请求到服务器(Server)端。在回送的过程中,客户无法在当前页面进行其他的操作(比如继续浏览当前网页的其他内容),需要等待服务器端对请求进行响应后,才能进行下一步的操作,这样的等待是漫长的。那么Ajax技术的出现,很好的缩短了这个漫长的等待。

AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML)。现在的GIS客户端编程都是基于Ajax技术的。我觉得Ajax最大的特点在于它提供了更好的用户体验。以往的Web开发,当用户填完表单后点击“提交”按钮,整个页面都会回送请求到服务器(Server)端。在回送的过程中,客户无法在当前页面进行其他的操作(比如继续浏览当前网页的其他内容),需要等待服务器端对请求进行响应后,才能进行下一步的操作,这样的等待是漫长的。那么Ajax技术的出现,很好的缩短了这个漫长的等待。

f952142af2ed9a3d9cf786341b1b4f68.png

上面这图就是传统的网络应用程序模型和是用了Ajax的网络应用程序模型的比较。传统的模型,当客户端发出请求(HTTP request)后,需要将当前页面都回送给服务器端。服务器对请求进行分析后,发出的响应中包含新页面的所有信息,包括HTML、CSS和DATA,一起回送给请求页面,这样整个页面都会根据响应过来的信息重新刷新一遍。

Ajax模型中,页面的请求一般是由javascript触发的,经过Ajax engine(一般是XMLHttpRequest)将请求发送到Server端,这个过程不需要把整个页面进行回送。Server对数据进行响应的处理后发送回应信息,回应信息的格式一般是string和XML,其中就不需要包含整个页面的HTML和CSS,只需要把请求中需要的数据发送给请求页面,这样的数据传输量也就小了。响应的数据由javascript进行处理。这样在整个请求和响应过程中,用户还可以对当前页面进行其他的操作,所以说整个Ajax请求是异步的。

下面是一个AJAX请求的Demo:向服务器获取服务器当前的时间。我是用的是asp.net作为Server端。

客户端Html代码:

01

02

04

05

AJAX Demo

06

07

var request=null;//Ajax请求对象

08

//根据不同浏览器创建请求对象

09

function createRequest()

10

{

11

try{

12

request=new XMLHttpRequest();

13

}

14

catch(trymicrosoft)

15

{

16

try{

17

request = new ActiveXObject("Msxm12.XMLHTTP");

18

}

19

catch(othermicrosoft)

20

{

21

try{

22

request = new ActiveXObject("Microsoft.XMLHTTP");

23

}

24

catch(faild)

25

{

26

request=null;

27

}

28

}

29

}

30

if(request==null)

31

alert("创建request对象失败");

32

}

33

//异步请求触发器

34

function getServerTime()

35

{

36

createRequest();//创建请求对象

37

var url="Default.aspx?time=";//新脚本的url

38

var date = new Date();

39

url=url+date.getTime();

40

request.open("GET",url,true);//请求对象初始化连接

41

request.onreadystatechange=updatePage;//设置服务器响应请求后的回调函数

42

request.send(null);//向服务器发送请求

43

}

44

//服务器响应请求后的回调函数

45

function updatePage()

46

{

47

if(request.readyState==4)//就绪状态(ready state)有4个值“1:连接刚被初始化;

48

{                       //2:正在处理请求;3:服务器快要完成请求;4:请求完成,浏览器得到响应”

49

var time=request.responseText;//服务器的响应数据

50

51

document.getElementById("timeInfo").innerHTML=time;

52

53

}

54

}

55

56

57

58

服务器当前的时间是:

59

60

61

THE END
< <上一篇
下一篇>>