【问题标题】:error 501 method no implemented on jquery codeigniter错误 501 方法未在 jquery codeigniter 上实现
【发布时间】:2014-12-13 11:33:40
【问题描述】:

当我使用 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

请帮帮我!

【问题讨论】:

    标签: php android jquery ajax codeigniter


    【解决方案1】:

    如果您在您的项目上启用了 CSRF 检查,您应该将 csrf_token_name 发送到 CI。 所以,你应该在你的 HTML 代码中使用 form_open("/some_url",'') 和 form_close() 然后序列化表单并发送到服务器。

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

    检查这个: Codeigniter (CSRF) jQuery ajax problem

    【讨论】:

      【解决方案2】:

      在视图中改变这一行

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

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

      在控制器方法中添加以下行

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

      用 echo 代替 die

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

      【讨论】:

        【解决方案3】:

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

        mysql_set_charset('utf8');
        

        它的工作

        【讨论】:

        • 您应该添加一些文本来解释此答案的作用以及为什么它为特定问题提供了解决方案。代码转储很少对其他人有用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2020-02-02
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多