我正在使用CakePHP 2.3.7。CakePHP Ajax方法不檢索會話數據
我有一個方法在我的控制器中通過ajax調用,它不能成功地從會話中檢索數據。我正在做以下事情。
我有一個從ajax調用注入DOM的地址表單。用戶使用無效數據提交表單。我得到的錯誤和值出地址模型和請求數據,並寫入會議如下:
public function index() {
//On form validation fail
$errors = $this->Address->validationErrors;
$data = $this->request->data;
$this->Session->write('Address', array('errors' => $errors,
'data' => $data));
}
做一個全面的檢查,以確保它在會議:
var_dump($this->Session->read('Address'));
頁現在重新加載和JS觸發此AJAX方法:
$.ajax({
url: '/orders/getAddress.html',
data: {"country" : country, "shipping" : shippingOption},
dataType: 'html',
cache: false,
success: function(data){
//data is the address form html
}
});
在的getAddress控制器:
public function getAddress()
{
if($this->request->is('ajax')){
//Gather up data to create html form and put into an array
$data = array('states' => $states, etc...);
//Check for errors and values in session
if($this->Session->check('Address') == true){
$data['errors'] = $this->Session->read('Address.errors');
$data['values'] = $this->Session->read('Address.data');
}
$this->set(compact('data'));
$this->layout = 'ajax';
}
}
在大多數情況下,當getAddress()通過ajax觸發時,表單會呈現,但會話是空的,我的錯誤和值不再可用。它變得有點瘋狂,因爲它不一致可重複。有時候我的數據會讓它看起來有些不一樣,有時卻不會。我打得四處我的會話設置了一下,這裏就是他們的樣子:
Configure::write('Session', array(
'defaults' => 'database',
'checkAgent' => false,
'ini', array('session.cookie_secure' => false, 'session.referer_check' => false)
));
我加帕拉姆
'session.cookie_httponly' => false
而且在我的開發環境收效甚微,但對生產,數據在ajax調用中仍然在會話中丟失。
我在我的繩子的盡頭!建議感激。