1

Rohan Kumar による受け入れられた回答:

$.post() をに変更

$.post("monitor/loadEVents", function(data){
    if(data && data.response){                    // (didn't even have to change this for it to work, but I like this condition more than my own one)
        console.log('Wow, it works.');
    } else {
        console.log(data);
    }
},'json');                 // put the third parameter as json

以下の元の質問:

Zend Framework 2 で初めて jQuery AJAX を試しています (これまで AJAX をまったく使用したことがありません)。そうは言っても、私はまだ JSON を扱った経験があまりないので、初歩的な間違いを許してください ;)

私のjsファイルでは、コントローラーで関数を呼び出してJSONオブジェクトを返しています。私の問題は、「データ」をコンソールに記録すると、その構造が正常に記録されることですが、「データ」のキーを使用して何かをしようとすると、それらの値が未定義として返されることです。

ここで関数を呼び出します。

$('#loadmore').on('click', function(event){
    $.post("monitor/loadEVents", function(data){
        if(data.response == true){
            console.log('Wow, it works.');       // Want this condition met, but it never is.
        } else {
            console.log(data);                   // so it logs data
        }
    })
});

コントローラー内の関数は次のとおりです。

public function loadEventsAction(){
    $request    = $this->getRequest();
    $response   = $this->getResponse();
    if($request->isPost()){
        $events = array('a bunch' => 'of stuff');
        $response->setContent(\Zend\Json\Json::encode(array('response' => true, 'events' => $events)));
    }
    return $response;
}

これは、データをログに記録する方法です。

{"response":true,"events":{"a bunch":"of stuff"}} 

「データ」の応答キーとイベント キーを正しく取得するにはどうすればよいですか?

4

1 に答える 1