2011-05-21 16 views
0

我試圖在Zend框架中使用Ajax。我遵循這個tutorial,它的工作原理。我用下面的代碼來獲取數據:

$('#button').click(function() { 
     $.ajax({ 
      url: './ajax/review/format/json', 
      dataType: 'json', 
      success: function(json_data){ 
       alert('....'); 
      } 
     });  
    }); 

解析的數據是象下面這樣:

Array ([reviews] => Array ([0] => Array ([reviewid] => 3 [userid] => 1 [locationid] 
=> 3) [1] => Array ([reviewid] => 2 [userid] => 2 [locationid] => 2) [2] => Array ( 
[reviewid] => 1 [userid] => 1 [locationid] => 1))) 

JSON的我得到類似如下:

{ 
    "data": { 
     "reviews": [ 
      { 
       "reviewid": 3, 
       "userid": 1, 
       "locationid": 3 
      }, 
      { 
       "reviewid": 2, 
       "userid": 2, 
       "locationid": 2 
      } 
     ] 
    } 
} 

我不知道「數據」字段的來源。我猜它與Zend解析控制器數據以查看數據的方式有關。 $this->view->data = array(...)

希望我解釋清楚,請幫我刪除額外的「數據」字段。

+0

你的視圖看起來像是什麼顯示json? – 2011-05-21 21:20:50

+0

嗨@onteria_,視圖如下: '<! - views/scripts/review.ajax.phtml - > <?php print_r($ this-> data); ?> – Shichao 2011-05-22 10:50:28

回答

1

我更喜歡使用JSON動作助手發佈的數據 - 這樣的:

// in controller 
$this->_helper->json($dataToSend); 

它將刪除佈局,禁用視圖渲染併發送正確的頭。

編輯:您也可以指定一個變量來有你想要的鍵,將視圖 - 例如:

$this->view->reviews = $data; 

這將刪除該JSON「數據」你不想...

+0

嗨,我應該在視圖中使用哪些代碼並且$ .ajax仍然有效?謝謝。 – Shichao 2011-05-22 21:56:58

+0

你不會看到。該響應將直接從控制器發送。 – 2011-05-22 22:35:11

+0

謝謝,但我是新來的zend和JavaScript。你能告訴我如何從JavaScript中的控制器獲取數據?非常感謝 – Shichao 2011-05-22 22:49:39

0

如果Zend未提供配置,則無法刪除數據字段。但是您可以查看該視圖的代碼並嘗試從其繼承,並更改功能或編寫自己的視圖,以便JSON數據對象本身。

其他方法是將所有數據屬性直接放入模型中而不是數據對象。但是,那麼模型內部必定會存在某種會產生衝突的錯誤對象。

+0

Hi @ user756919,我用'$ this-> view-> data = $ return;'將數據從控制器解析到視圖。這個視圖看起來像這樣:'<! - views/scripts/review.ajax.phtml - ><?php print_r($ this-> data); ?>'。那麼你能解釋一下「繼承它並改變功能或者寫下你自己的觀點」嗎?謝謝。 – Shichao 2011-05-22 10:57:26