1

zf 1 で ajax を操作する方法を学ぼうとしていますが、問題が発生しました。私は単純なフォームを持っており、その値をコントローラーのインデックスに投稿しています。送信したメッセージを返して、class="show-msg" を使用して div に出力したいのですが、機能していないようです。 . 未定義のインデックス「メッセージ」というphpエラーがあります。誰か助けてください。私のjquery関数:

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

フォームはモデルを介してフレームワークの方法で作成されており、そのアクションとメソッドは問題ありません。リクエストは送信されていますが、レスポンスとして json 形式ではなく完全な html ページのソース コードを取得します。

注:編集済み

4

1 に答える 1

0

messageは jQuery コードで定義されていません{'message':message}。試す

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

ajax コンテキストにもエラーが表示されます。そのはず

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

indexActionjson 形式で結果が返されます。

echo json_encode($data);

index アクションから常に json で応答することを意図している場合は、json ヘルパーを使用し、ajax コンテキストを使用しないことをお勧めします。 $contentSwitch を取り除き、index アクションを終了します。

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

同じアクションから異なる形式で返したい場合は、コンテキストを使用します。

于 2013-09-23T09:53:00.217 に答える