2012-07-11 1 views
1

Что я хочу сделать, это в основном получить содержимое div и sub div каждые 3 секунды. Я использую ajax для отправки данных контроллеру. но я получаюAjax вызов с временным интервалом zend framwork

$.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

+0

JQuery включен в мой макет по умолчанию, и я отключил его. это влияет? – user1515244

ответ

0

$.ajax имеет определенные JQuery. Вы должны включить его перед вызовом этой функции.

1

Как только 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); 
} 

EDIT: Oh , Я забыл, вы, вероятно, захотите проверить ответ, отправленный вашим контроллером, из вашего кода jQuery. Вы можете достичь этого следующим образом:

$.ajax({ 
//... 
success: function(jsonResp) { 
    if(jsonResp['isValid']) alert(jsonResp['gotValue']); 
} 
});