Ajax-вызов с временным интервалом Zend Framework
Что я хочу сделать, так это в основном получать содержимое div и sub div каждые 3 секунды. Я использую AJAX для отправки данных на контроллер. но я получаю
$.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-контроллере
2 ответа
$.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']);
}
});