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

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

阅读帖子()

于 2013-07-30T09:58:31.890 回答