错误501方法未在jquery codeigniter上实现

时间:2014-12-13 11:33:41

标签: php android jquery ajax codeigniter

我有一个问题,当我使用jquery发布表单和codeigniter响应显示错误501方法没有实现。我在使用像android这样的智能手机浏览器时遇到此错误。这是我的代码:

        $(document).ready(function(){
        var obj=$('#recoveryForm');
        obj.find(':submit').removeClass('disabled');
        obj.validate({
        submitHandler: function() {
             $.ajax({
                 cache:false,
                 dataType:'json',
                 url: "<?=base_url();?>reseller/changePassword",
                 type: "POST",
                 data: obj.serialize(),
                 beforeSend:function(){
                     obj.find(':submit').button('loading');
                 },
                 success:function(data){
                     if(data.status=='false'){
                          $('#alert').html('<div class="alert alert-danger center">'+data.noty+'</div>');
                          obj.find(':submit').button('reset');
                     }else{
                         $('#alert').html('<div class="alert alert-success center">'+data.noty+'<br><br><a href="<?=base_url();?>" class="btn btn-pink">Back to Home</a></div>');
                         obj.fadeOut('slow',function(){obj.remove()});
                     }
                 },
                  error: function (xhr, ajaxOptions, thrownError) {
                     $('#alert').html('<div class="alert alert-danger center">'+xhr.status+' '+ thrownError+'</div>');
                     obj.find(':submit').button('reset');
                  }
              });
            }
        });
    });

这是我的PHP代码

    public function changePasswordR(){

    if($this->check_login()){
        $data=$this->input->post(null,true);
        if(!empty($data['password']) || !empty($data['newpassword']) || !empty($data['konfirmpassword'])){
            $user=$this->reseller_data();
            $row=$this->madmin->read(__CLASS__,'where email= "'.$user['email'].'"');
            if(!empty($row)){
                if($this->salt($data['password'])==$row[0]->password){
                    if($this->madmin->update(__CLASS__,'email',$row[0]->email,array('password'=>$this->salt($data['newpassword'])))){
                        //noty
                        $this->madmin->create('notification',array('id'=>null,'time'=>date('Y-m-d H:i:s'),'msg'=>$row[0]->nama.' mengubah passwordnya'));
                        die(json_encode(array('status'=>'true','noty'=>'<script type="text/javascript">alert("Selamat '.$row[0]->nama.', password anda berhasil diubah. Silahkan melakukan login ulang menggunakan password baru anda.");window.location.href = "'.base_url().'logout";</script>')));
                    }else{
                        die(json_encode(array('status'=>'false','noty'=>'Gagal mengubah password, silahkan coba beberapa saat lagi.')));
                    }
                }else{
                    die(json_encode(array('status'=>'false','noty'=>'Password lama salah.')));
                }
            }else{
                die(json_encode(array('status'=>'false','noty'=>'Akun tidak ditemukan.')));
            }
        }else{
            die(json_encode(array('status'=>'false','noty'=>'Data tidak lengkap.')));
        }
    }else{
        die(json_encode(array('status'=>'false','noty'=>'Login kembali untuk melanjutkan.')));
    }
}

enter code here

请帮助我!

3 个答案:

答案 0 :(得分:1)

如果启用了CSRF检查项目,则应将csrf_token_name发送给CI。 因此,您应该在HTML代码中使用form_open(&#34; / some_url&#34;,&#39;&#39;)和form_close(),然后将表单序列化并发送到服务器。

var _form = $("#some_form").serializeArray();

检查一下: Codeigniter (CSRF) jQuery ajax problem

答案 1 :(得分:0)

在视图中更改此行

url: "<?=base_url();?>reseller/changePassword",

url: "<?php echo base_url('reseller/changePassword');?>",

将以下行添加到控制器方法

header('Content-Type: application/json');

并使用echo代替die

echo json_encode(array(....));

答案 2 :(得分:-1)

我不知道为什么,但我添加了这段代码

mysql_set_charset('utf8');

及其工作