带时间间隔的Ajax调用zend框架
问题描述:
我想做的事情基本上是每3秒检索一次div和sub div内容。我正在使用ajax将数据发送到控制器。但我越来越带时间间隔的Ajax调用zend框架
$.ajax is not a function
http://localhost/index/editor
Line 25
这是我使用的代码。
<script type="text/javascript">
window.setInterval(getAjax, 3000);
function getAjax() {
$.ajax({
type: "POST",
url: 'localhost/index',
data: "some-data"
});
}
</script>
1)我做错了什么
2)如何接收的Zend控制器
答
$.ajax
数据由jQuery的定义。在调用此函数之前,您必须包含它。
答
一旦jQuery包含在您的页面中,您将能够使用$ .ajax()函数。之后,在您的控制器中,您可以访问$ _POST变量中的数据。为了更方便,我通常使用JSON对象将数据发送到控制器:
<script type="text/javascript">
window.setInterval(getAjax, 3000);
var data = {};
data['field1'] = 'value1';
data['field2'] = 'value2';
function getAjax() {
$.ajax({
type: "POST",
url: 'localhost/index',
data: data
});
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">
而在你的控制器,你可以使用_getParam找到一个值:
public function ajaxAction() {
//Disable the view (if this is an AJAX call)
if($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender();
}
//Get posted data
$field1 = $this->_getParam('field1');
$field2 = $this->_getParam('field2');
if($field1=='value1') {
$jsonResp['isValid'] = 1;
$jsonResp['gotValue'] = $field2;
}
header('Content-type: application/json');
echo Zend_Json::encode($json);
}
编辑: 哦,我忘了,你可能会想要检查你的控制器从你的jQuery代码发送的响应。您可以通过以下方式实现该功能:
$.ajax({
//...
success: function(jsonResp) {
if(jsonResp['isValid']) alert(jsonResp['gotValue']);
}
});
您是否包含了jQuery(或Zepto)? – Florent 2012-07-11 15:12:05
Jquery包含在我的默认布局中,并禁用它。这是否有效? – user1515244 2012-07-11 15:15:58