2013-07-30 29 views
1

接受的答案由罗汉库马尔:)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"}} 

什么我这样做我可以正确地访问“数据”中的响应和事件键吗?

+1

是服务器发送'内容类型:应用程序/ json'?如果不是,你需要在'$ .post()'选项中加入'dataType:'json''。 – Barmar

+0

@Barmar所以你的意思是修改$ .post()这个? * $后( “监控/ loadEVents”,{ \t \t \t数据类型: 'JSON' \t \t},*只是尝试这样做,但它不工作 – vanamerongen

+0

@Barmar,NVM,我认为我做了什么,你说的不对。答案是这样说的,它现在可以工作了。谢谢。 – vanamerongen

回答

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()

+0

窍门,谢谢! – vanamerongen