邪罗刹的菠萝阁


> \(^o^)/,为了治疗小邪那个灰常严重的 JavaScript 恐惧症,让我们开始攻打 JavaScript 的阵地吧。
> 首先学习一下创建 XMLHttpRequest 对象,然后使用这个对象进行一次简单的表单动态处理。

一. 创建 XMLHttpRequest 对象:

> Ajax 的重点就在于 XMLHttpRequest 对象,可以让我们不用刷新页面就能与服务器交换数据。
> 而不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的,下面我们先写点简单的代码。

<script type="text/javascript">
function ajaxFunction() {
	var xmlHttp;
	try {
		xmlHttp=new XMLHttpRequest();
	}
}
</script>

> OK,那么上面代码给 Firefox Opera Safari Chrome 之类的浏览器来创建对象都是木有问题的。
> 但是这里杯具了,因为我们碰到了 IE [- -#],所以需要把代码变得像下面那么长,IE 才能运行。

<script type="text/javascript">
function ajaxFunction() {
	var xmlHttp;
	try {
		xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari and so on ..
	}
	catch (e) {
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // IE 6.0+
		}
		catch (e) {
			try {
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.5+
			}
			catch (e) {
				alert("您的浏览器不支持AJAX!");
				return false;
			}
		}
    }
}
</script>

二. 输入时动态发出请求:

> 你可以试一下下面的代码,在 “输入” 处输入内容的时候,每按一下按键,都会进行一次请求。
> 下面的处理方式是 GET 方式请求一次 time.php,返回的数值是根据时间的秒来变动的喔。

> 演示传送门 - http://www.evlos.org/apps/demo/ajax_001

<html>
<head>
<title>Ajax执行表单测试</title>
</head>
<body>
<script type="text/javascript">
function ajaxFunction() {
	var xmlHttp;
	try {
		xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari and so on ..
	}
	catch (e) {
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // IE 6.0+
		}
		catch (e) {
			try {
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.5+
			}
			catch (e) {
				alert("您的浏览器不支持AJAX!");
				return false;
			}
		}
    }
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			document.myForm.time.value=xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","time.php",true);
	xmlHttp.send(null);
}
</script>
<form name="myForm">
输入: <input type="text" name="username" onkeyup="ajaxFunction();" />
时间: <input type="text" name="time" />
</form>
</body>
</html>
<?php echo time(); ?>
//这是 time.php 的代码,这里的代码表示输出 Unix 时间戳,额,简单说就是会每秒变一次数值

三. 输入时动态发出请求的原理:

//使用下面的代码来创建一个表单,请注意我们的表单里面是木有 “提交” 按键的
<form name="myForm">
输入: <input type="text" name="username" onkeyup="ajaxFunction();" />
时间: <input type="text" name="time" />
</form>
//下面的内容要包含在 ajaxFunction() 函数中,在创建 XHR 对象之后执行
xmlHttp.onreadystatechange=function() {
	if(xmlHttp.readyState==4) {
		document.myForm.time.value=xmlHttp.responseText;
	}
}

xmlHttp.open("GET","time.php",true);
//open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。
//第二个参数规定服务器端脚本的 URL。第三个参数规定应当对请求进行异步地处理。

xmlHttp.send(null); //send() 方法可将请求送往服务器。

四. 附言:

> - -#,虽然还是有那么一点点的 JavaScript 恐惧症,所以要蛋定,要灰常蛋定。╮(╯▽╰)╭ 阿门。

> 呵呵,下一篇文章会对不同参数的传递进行讲解,如果文章不长,就会继续讲解结果的返回。
> 希望对大家有帮助哦。゜)~~~ <(__)> <゜)))彡 <*)) >=< <^!^> <+))><< 。。。。。

Leave a comment
57 Comments.
  1. winy Mozilla Firefox Windows 坐沙发!#1

    呃,我只看得懂jQuery的ajax过程,纯js头大

    @
    • @winy , 为了克服 JavaScript 恐惧症,所以就咬一咬牙直接从这里下手鸟 ~ ╮(╯▽╰)╭ ~
      ╮( ̄▽ ̄")╭ 哎,啥时候能够浏览器内置 jQuery 库哩 ~~

      @
  2. dudo Google Chrome Windows 坐板凳!#2

    :surprised: 从走点路顺势过来抢个沙发,再慢慢看文章

    @
  3. Kaisir.Wang Mozilla Firefox Windows 躺地板!#3

    啊哈哈哈 我最近也有在看Ajax的东西 我是为了ExtJs才看这个 喀喀喀 JavaScript感觉跟我上手的其他语言都不太一样。。有些小郁闷~

    @
    • @Kaisir.Wang , 哇靠,这个 ExtJs 太专业鸟 ~ 疯掉了啊啊啊啊 o(≧口≦)o ~
      嘿嘿,感觉还是喜欢 PHP,JavaScript 的语法太复杂鸟 ~

      @
  4. Kaisir.Wang Mozilla Firefox Windows 天花板!#4

    PS:你那个Type进一个字符就get的小程序,小心把服务器拖死额。。哈哈

    @
  5. mice Internet Explorer Windows 下水道!#5

    最近看见org域名的网站 都是顺手一关..o(︶︿︶)o 唉.杯具.

    @
  6. 我看不懂啊 :mad: ajax一窍不通

    @
  7. 第一段里面不用写try吧

    @
  8. :exclaim: AJAX...AJAX...AJAX...AJAX...AJAX...AJAX...

    一定要尽快掌握AJAX...

    @
  9. IE赶紧灭亡吧

    @
  10. 路过..

    @
  11. Ajax真是好东西 可以和jquery结合使用 那是如鱼得水

    @
  12. 貌似已经走在了你的教程前面 哈哈

    @
  13. 浏览器内置 jQuery 库 这想法不错 希望会吧

    @
  14. 我喜欢这样的文章 ,哈哈……刚刚看了几天PHP,对这个还不是很了解,多写写啊,小邪,嘎嘎

    @
  15. 貌似是可以是直接用jquery内置的ajax方法……

    @
    • @久酷 ,
      额,最近觉得 jquery 库太大了,受不鸟 ~
      不过现在看来大家都那么推崇,那一定性价比不会低的 ~
      所以以后就要用 jquery 咯 ~ 嘎嘎 ~

      @
  16. 如果只是简单的应用那就直接用jQuery的ajax调用,很容易,不需要考虑太多,最主要是兼容性不用担心。

    @
    • @QiQiBoY ,
      恩恩,写这篇文章的时候还是接受不了调用那么大的代码库 ~ :cry:
      不过现在释然了,因为突然想到我自己的图片就差不多几百KB了 ~ :redface:

      @
  17. 小邪 Google Chrome Windows #17

    回复邮件通知插件测试 ~ :arrow:

    @
  18. 小邪换主题了,很好看。
    把表情放在内容框上面就方便了。 :cry:

    @

Leave a Reply


[ Ctrl + Enter ]