带时间间隔的Ajax调用zend框架

带时间间隔的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控制器

+0

您是否包含了jQuery(或Zepto)? – Florent 2012-07-11 15:12:05

+0

Jquery包含在我的默认布局中,并禁用它。这是否有效? – user1515244 2012-07-11 15:15:58

$.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']); 
} 
});