2013-09-23 5 views
1

Я пытаюсь научиться работать с ajax в zf 1, но я столкнулся с проблемой. У меня простая форма, и я отправляю ее значение в индекс контроллера, а затем хочу вернуть сообщение, которое я отправил и вывел в div с классом = «show-msg», но он, похоже, не работает , У меня есть ошибка PHP, которая говорит, что неопределенное сообщение индекса. Может кто-нибудь, пожалуйста, помогите мне. моя функция JQuery:form submit ajax zend framework

$(document).ready(function(){ 
$("#form").submit(function() { 
    var message = $('#login').val(); 
    $.post('/index',{'message':message},function(data){ 
     //console.log(data); 
     $('.show-msg').html(data) 
    }); 
    return false;      
    });  
}); 

тогда мой контроллер

public function init() 
{ 

    $this->_helper->layout()->setLayout('admin'); 

    $contentSwitch = $this->_helper->getHelper('AjaxContext'); 
    $contentSwitch->addActionContext('ajax',array('json')) 
        ->initContext(); 

} 

public function indexAction() 
{ 
    $form = new Application_Form_Test(); 
    $this->view->form = $form; 
    $form->setAction('index') 
     ->setMethod('post'); 

    $myArrayofData = array('a','b','c'); 
    if($this->_request->isXmlHttpRequest()){ 
     $this->_helper->layout->disableLayout(); 

     $this->_helper->viewRenderer->setNoRender(true); 
     $msg = $this->_request->getPost(); 
     echo $msg['message']; 
    } 

форма создается путем рамочное через модель, и это действие и методы ok.Request в настоящее время отправки, но в качестве ответной реакции получить полный исходный код HTML-страницы вместо json-формата.

Примечание: EDITED

ответ

0

message не определен в коде Jquery {'message':message}. Попробуйте

$.post('admin/index',{'message':$('#message').val()},function(... 

Я также вижу ошибку в вашем контексте ajax. Он должен быть

$contentSwitch->addActionContext('index','json') 
    ->initContext(); 

в результатах indexAction возврата в формате JSON:

echo json_encode($data); 

Если ваше намерение всегда отвечать в JSON от действия индекса, я рекомендую вам использовать помощник JSon и не использовать Ajax контекст: избавиться от $ contentSwitch и закончить действие индекса с

$this->_helper->json->sendJson($data); 

использования контекстов, когда вы хотите, чтобы вернуться в различных форматах с Сэмом е действие.

+0

Я изменил мой контроллер: общественная функция indexAction() { \t $ данных = $ this-> GetRequest() -> getPost(); \t // $ this -> _ helper-> json-> sendJson ($ data); \t echo json_encode ($ data ['message']); \t} и мой JQuery код: $ (документ) .ready (функция() { \t $ ("# форма") представляет (функция() { \t \t вар сообщение = $ ('# сообщение.) .val(); $ .post ('админ/индекс', { 'сообщение': сообщение}, функция (данные) { \t console.log (данные); }); возвращение ложным; }) ; }); но когда я пытаюсь console.log (данные), я ничего не получаю – user2167174

+0

Вы используете firebug? Вы можете увидеть запрос и ответ на вкладке 'net'. Вы видите, что php получает сообщение «message» как параметр post? Вы видите '$ data' в ответе? –

+0

nope, no posts are send.only 6 получить запросы – user2167174