2011-12-15 83 views
0

我想只做一些簡單的用戶輸入使用jquery加載視圖。在這個例子中,我在網頁上有一個簡單的按鈕,它發送一個ajax請求來將包含表單的視圖加載到div中,這很好。表單提交時,數據不會被解碼並添加到請求數據數組中。CakePHP 2.0無法解碼錶單數據從jquery ajax請求

這裏是代碼的從主網頁的一個片段與簡單的鏈接

<?php 
    $this->Js->get('#sayHi')->event(
     'click', 
     $this->Js->request(
      array('action' => 'sayHi'), 
      array('update' => '#sayHiOutput') 
     ) 
    ); 
    ?> 
    <li><?php echo $this->Form->button(__('Say Hi'),array(
     'id'=>'sayHi', 
     'href'=>$this->Html->url(array('action'=>'sayHi')), 
     )); 
    ?></li> 
    <li><div id=sayHiOutput></div></li> 

加載視圖到DIV。該視圖是這樣的:

  <?php 
      $data = $this->Js->get('#WidgetSayByeForm')->serializeForm(array('isForm' => true, 'inline' => true)); 
      $this->Js->get('#WidgetSayByeForm')->event(
       'submit', 
       $this->Js->request(
       array('action' => 'sayBye'), 
       array(
         'update' => '#sayHiOutput', 
         'data' => $data, 
         'async' => true,  
         'dataExpression'=>true, 
        ) 
       ) 
      ); 
      ?> 
      <?php echo $this->Form->create('Widget',array('action'=>'sayBye','default'=>false));?> 
      <fieldset> 
       <legend><?php echo __('Add Widget'); ?></legend> 
      <?php 
       echo $this->Form->input('name'); 
      ?> 
      </fieldset> 
      <?php echo $this->Form->end(__('Submit'));?> 
      <?php echo $this->Js->writeBuffer(); ?> 

此代碼在提交表單並序列化請求的數據時觸發ajax請求。一切似乎正常工作,因爲我使用TamperData檢查了XML請求數據。然而,在控制器動作「sayBye」,請求數據數組是空的,雖然「查詢」點陣顯示了正確的信息,這裏是我印入日誌文件:

[data] => Array 
    (
    ) 

[query] => Array 
    (
     [_method] => POST 
     [data] => Array 
      (
       [Widget] => Array 
        (
         [name] => asdf 
        ) 

      ) 

    ) 

我所期待的是,請參閱數據數組與查詢數據中顯示的子數組具有相同的內容。所以我猜這是另一種情況,我只是錯過了一些明顯的東西,但我一直沒有弄明白。也許隱藏的_method不應該是POST?任何幫助將不勝感激,謝謝。

馬特

回答

2

您需要的'type' => 'POST'選項傳遞給request()方法

+0

就像這樣:'Js->獲取( '#WidgetSayByeForm' ) - > serializeForm(array('isForm'=> true,'inline'=> true)); \t echo「data:」。$ data; \t $這個 - > Js->獲取( '#WidgetSayByeForm') - >事件( '提交', $這個 - > Js->請求( 陣列( '行動'=> 'sayBye'), 陣列( \t \t \t \t '更新'=> '#sayHiOutput', \t \t \t \t '數據'=> $數據, \t \t \t \t '異步'=>假,\t \t \t \t \t 'dataExpression' => true, \t \t \t \t '類型'=> 'POST', \t \t \t) \t \t) \t); ?>`沒有工作,它仍然只是傳遞一個空數組。 – Matt 2011-12-16 00:51:36