我想在每个ajax调用上更新flashdata

时间:2018-12-13 21:32:59

标签: javascript ajax codeigniter

在我的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';
    } 

1 个答案:

答案 0 :(得分:0)

我看不出在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();
    }
    ...