1. 简介
不刷新整个页面而向服务器请求新数据
2. 库的选择
Dojo
jQuery
3. 交互
.1 客户端
.1 读取
.2 发送
.2 服务端
.1 读取
$_GET['VarName']; $_POST['VarName'];
.2 写回
4. zend 与 jquery
.1 客户端
$(window).load(function(){
alert("Hello world");
$.post("index/ajax", {Action:"get",Name:"jack"}, function (data, textStatus){
//返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等.
//this; // 在这里this指向的是Ajax请求的选项配置信息,请参考下图
alert(data);
alert(textStatus);//请求状态:success,error等等。 当然这里捕捉不到error,因为error的时候根本不会运行该回调函数
alert(this.type);
$('#container').html(data).css("color", "red");
});
});
//特别注意:"index/ajax",这是control与action的url,是相对路径,也可写成绝对路径:/zf2/public/index/ajax,其中/是
从apache的DocumentRoot开始的
.2服务器端
在相应的action中echo回的内容加上相应的view的内容就是返回的内容.如不需要view的内容,可以用
$this->renderScript("blank.phtml");此空白view,blank.phtml应该放在views/script下
或者取消view的显示
$this->_helper->viewRenderer->setNoRender();
.3 数据包装
.1 text
$str = "Hello ".$name."!";
echo $str;
.2 html/xml
dataType: "xml"
.3 json
dataType: "json"
$req = $this->getRequest();
$objRes = null;
$objRes->name = $req->getParam('name');
$objRes->age = $req->getParam('age');
$objRes->email = $req->getParam('email');
$this->_helper->json($objRes);
//将$objRes这个对象包装成json格式,在js方面以data.name, data.age, data.email来读取
/*
如果布局是打开(enabled)的,则关闭(disable)它。
如果视图解析器(ViewRenderer)是打开的,则关闭它。
设置 'Content-Type' 响应头为 'application/json'。
缺省地,不需要等待动作执行完成,立即返回响应。
*/
4. 数据解包
.1 text
data
.2 html/xml
dataType: "xml"
.3 json
dataType: "json"
data.name, data.age, data.email;
阅读(537) | 评论(0) | 转发(0) |