2014-12-13 117 views
-2

我有一个问题,当我张贴表单使用jQuery和Codeigniter的响应显示错误501方法没有实现。我使用智能手机浏览器,如android.this时得到这个错误是我的代码:错误501方法没有在jQuery codeigniter上实现

 $(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 

请帮帮我!

回答

-1

我不知道为什么,但我添加此代码

mysql_set_charset('utf8'); 

,它的工作

+0

您应该添加一些文字解释一下这个答案确实为什么它为特定问题提供解决方案。代码转储很少用于其他人。 – Paritosh 2016-02-10 03:37:48

1

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

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

检查此: Codeigniter (CSRF) jQuery ajax problem

0

变化这一行视图

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

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

添加下面线到控制器方法

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

,并使用回声,而不是死

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