我想在每次ajax调用中更新flashdata



在我的Web应用程序中,我希望在每次ajax调用时都得到一条错误消息。我使用CodeIgniter,我更喜欢使用flashdata。我知道flashdata在刷新之前不会更新

这是我的ajax代码

$.ajax({
url: '<?php echo base_url();?>Auth/userlogin',
type: 'POST',
data: {
email: email,
password:password
},
dataType: 'text', 
success: function(data) {
var error="<?php echo $this->session->flashdata('signup'); ?>"
if(data=='no'){
$('#loginerror').html('<div class="alert alert-danger">'+error+'</div>');
}else{
$('#loginerror').html(' ');
$('#login').hide();  
location.reload();
}

},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("some error");
}
}); 

这是我的控制器,我正在设置Flashdata

$this->form_validation->set_rules('email', 'email', 'trim|required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'trim|required');
if ($this->form_validation->run()==FALSE) {
$this->session->set_flashdata('signup',$this->form_validation->first_error());
echo 'no';
} 

我看不出有任何理由在ajax中使用flash数据,因为您已经可以在响应中返回所需的任何数据,在您的示例中,您可以这样做:

if ($this->form_validation->run() == FALSE) 
{
$this->json['signup'] = $this->form_validation->first_error();
$this->json['status'] = false;
echo json_encode($this->json);
}
else
{
$this->json['status'] = true;
// your code ....
}

以及您的成功:

dataType: 'JSON',
success: function(data) {
if(data.status == false) {
$('#loginerror').html('<div class="alert alert-danger">'+data.signup+'</div>');
} else {
$('#loginerror').html(' ');
$('#login').hide();  
location.reload();
}
...

相关内容

  • 没有找到相关文章

最新更新