У меня есть базовая форма ajax на моем сайте, использующая Js-помощник, она отлично работает, но когда есть ошибки проверки, обратный вызов обновления дублирует всю страницу внутри моего div.CakePHP ajax form update duplicating page
Успех ДИВ:
<div id="success"></div>
кнопку Отправить:
echo $this->Js->submit('Send', array(
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->get('#sending')->effect('fadeOut'),
'update'=>'#success',
'class'=>'btn btn-primary'
));
Javascript:
$(document).ready(function(){
$('#postkey, #gender, #hair, #location, #message').blur(function(){
$.post(
'/Cake_ajax/Posts/validate_form',
{ field: $(this).attr('id'), value: $(this).val() }
//handleNameValidation
);
});
});
Validate функция формы в мой контроллер:
public function validate_form(){
if($this->RequestHandler->isAjax()){
$this->request->data['Post'][$this->request['data']['field']] = $this->request['data']['value'];
$this->Post->set($this->request->data);
if($this->Post->validates()){
$this->autorender = FALSE; // don't render a view
$this->set('error','');
}else{
$this->layout ="ajax";
$this->autoRender = FALSE;
$error = $this->validateErrors($this->Post);
$this->set('error',$this->Post->validationErrors[$this->request['data']['field']][0]);
}
}
}
Я не знаю, достаточно ли информации, чтобы продолжить. Если мне нужно опубликовать больше кода, просто дайте мне знать.
спасибо.
Если это прямая копия, вы пытались изменить строку на '$ this-> autoRender = false' (с капиталом R)? Кроме того, какой макет используется по умолчанию? –
Приветствия! Я искал решение той же проблемы, и ваш принятый ответ решил мою проблему. – Fr0zenFyr
Такое большое чувство, когда у вас проблема с Google, и у кого-то была одна и она была решена :) Удачи вам в вашем проекте. –