接受的答案由罗汉库马尔:)jQuery的AJAX响应对象日志键为未定义
更改$。员额(进入
$.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"}}
什么我这样做我可以正确地访问“数据”中的响应和事件键吗?
是服务器发送'内容类型:应用程序/ json'?如果不是,你需要在'$ .post()'选项中加入'dataType:'json''。 – Barmar
@Barmar所以你的意思是修改$ .post()这个? * $后( “监控/ loadEVents”,{ \t \t \t数据类型: 'JSON' \t \t},*只是尝试这样做,但它不工作 – vanamerongen
@Barmar,NVM,我认为我做了什么,你说的不对。答案是这样说的,它现在可以工作了。谢谢。 – vanamerongen