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?任何幫助將不勝感激,謝謝。
馬特
就像這樣:'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