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"}}
「データ」の応答キーとイベント キーを正しく取得するにはどうすればよいですか?