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"}}
我该怎么做才能正确获取“数据”中的响应和事件键?