php – CodeIgniter控制器 – JSON – AJAX
发布时间:2020-12-13 22:06:28 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试通过 AJAX发送带有CodeIgniter的表单构建,并尝试使用 JSON获取响应.但是,当我打开我的开发人员选项卡时,我只看到响应(我甚至不确定,如果这实际上是一个响应,因为它显示了两个json数据). 它显示的只是加载微调器,然后消失. 代码已在不使用AJAX的情
我正在尝试通过
AJAX发送带有CodeIgniter的表单构建,并尝试使用
JSON获取响应.但是,当我打开我的开发人员选项卡时,我只看到响应(我甚至不确定,如果这实际上是一个响应,因为它显示了两个json数据).
它显示的只是加载微调器,然后消失. 代码已在不使用AJAX的情况下进行了测试,并且可以正常运行,因此PHP中不会出现错误. 这是我的重置密码的控制器: <?php Class Users extends CI_Controller { public function forgot_pass() { if(!$this->input->post('to_email')) { exit("No data"); } $this->load->model('user'); $email = $this->input->post('to_email'); $email_addr = $this->user->get_email_address($email); if(empty($email_addr)) { echo json_encode(array('pls'=>0,'msg' => "E-mail address was not found. Try again")); } $this->load->helper('string'); $new_password = random_string('alnum',8); $this->load->library('phpass'); $update_password = array( 'password' => $this->phpass->hash($new_password)); $update_password = $this->user->update_password($email,$update_password); $this->load->library('email'); $config['newline'] = 'rn'; $this->email->initialize($config); $this->email->from('your@example.com','Your Name'); $this->email->to($email); $this->email->subject('New password'); $this->email->message("Hey," .$email_addr['name']. ". Your new password is: " .$new_password); if($this->email->send()) { echo json_encode(array('pls'=>1,'msg' => "Password has been sent to given e-mail address")); } } } ?> 这是我用jQuery编写的AJAX调用: $(document).ready(function() { $("form#forget_pass_form").on('submit',function(e){ e.preventDefault(); $("#loading_spinner").show(); var from = $(this); $.ajax({ url: from.attr('action'),type: from.attr('method'),data: $(from).serialize(),}).done(function(data) { if(data.pls == 0) { $("#forgot-pass-success").hide(); $("#forgot-pass-error").show(); $("#forgot-pass-error").fadeIn(1000).html(data.msg); } if(data.pls == 1) { $("#forgot-pass-error").hide(); $("#forgot-pass-success").show(); $("#forgot-pass-success").fadeIn(1000).html(data.msg); } $("#loading_spinner").hide(); }); return false; }); }); 解决方法
首先,您可以尝试在Controller中设置正确的标头吗?
header(‘Content-Type’,’application / json’); 或者更好的是: $this->output->set_content_type('application/json'); 作为旁注,您应该确保始终返回JSON数据,因此我将删除exit()消息并在方法的底部放置一个默认的JSON响应. 不要忘记,当你回应你的JSON时,你可以放回;之后停止在该方法中运行的任何更多代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |