不久之前我写过一篇关于mootools运用ajax的文章《【mootools中文实例诠释】Ajax类的简单使用》,但是这篇文章是基于mootools 1.11版本写的,今天在用1.2版(以下称mt1.2)写一个关于ajax和json调用的教程。
如果你现在在学mt1.2你会发现1.2版已经取消的Ajax这个类了,取而代之的是更强大的Request类。那要怎么实现Ajax效果呢?
老规矩还是先看效果:
http://xiebiji.com/works/mt1.2Ajax/
示例下载地址:目标另存为
html+js代码
<html>
<head>
<script type="text/javascript" src="mootools.js"></script>
<title>mt1.2ajax-from http://xiebiji.com</title>
<script type="text/javascript">
var jsonRequest;
window.addEvent('domready',function(){
jsonRequest = new Request.JSON({
url: "tellMySiteInfo.php", //请求数据链接地址,从这个地址获取后台数据
onComplete: function(siteInfo, text){//由上述地址在服务端解释后输出一个json字符串这个字符串即为text,而siteInfo为这个json字符串转化成的js对象
$msg='你抛数据的形式是:'+siteInfo.method+'\n';
$msg+='你选择的站长是:'+siteInfo.owner+'\n'+'他的个人主页是:'+siteInfo.homePage+'\n\n';
$msg+='返回的json字符串是:'+text;
$('txt').set('value',$msg)
}
})
});
function showMeTheSite(method){
if(method=='get'){
jsonRequest.get({
'owner': $('owner').get('value')//$('owner').get('value')为select控件当前值
});//以get的方式让jsonRequest抛出数据
}
else{
jsonRequest.post({
'owner': $('owner').get('value')
});//以post的方式让jsonRequest抛出数据
}
return false;
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
请选择一个站长:
<select name="owner" id="owner">
<option value="xiebiji">xiebiji</option>
<option value="ajoe">ajoe</option>
</select>
<label>
<input type="submit" name="getBtn" id="getBtn" value="以get的方式抛数据" />
</label>
<label>
<input type="submit" name="postBtn" id="postBtn" value="以post的方式抛数据" />
</label>
</form>
数据将在以下文本框显示:<br/>
<textarea style="height:200px; width:300px" name="txt" cols="" id="txt" rows=""></textarea>
</body>
</html>
php文件tellMySiteInfo.php代码
<?php
//定义站点属性
$site1=array(
'method'=>'',
'owner'=>'xiebiji',
'homePage'=>'http://xiebiji.com'
);
$site2=array(
'method'=>'',
'owner'=>'ajoe',
'homePage'=>'http://ajoe.com'
);
$jsonToJs='';//返回的json字符串
if(isset($_GET['owner'])){//假如是get方式
if($_GET['owner']=='xiebiji'){
$site1['method']='GET';
$siteInfo=$site1;
}
else{
$site2['method']='GET';
$siteInfo=$site2;
}
}
elseif(isset($_POST['owner'])){//假如是post
if($_POST['owner']=='xiebiji'){
$site1['method']='POST';
$siteInfo=$site1;
}
else{
$site2['method']='POST';
$siteInfo=$site2;
}
}
else{
die('非法操作');
}
$jsonToJs=json_encode($siteInfo);//转为json格式字符串
echo $jsonToJs;
?>
有话要说