jQuery AJAX响应对象将控制台上的键记录为未定义

时间:2013-07-30 09:55:35

标签: php jquery ajax zend-framework2

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"}} 

我该怎么做才能正确查看“数据”中的响应和事件键?

1 个答案:

答案 0 :(得分:3)

试试这个,

$.post("monitor/loadEVents", function(data){
    if(data && data.response){
        console.log('Wow, it works.');  // Want this condition met, but it never is.
    } else {
         console.log(data);       // so it logs data
    }
},'json');// put the third parameter as json

阅读post()