在尝试投票之前请先阅读此问题。这个问题有很多重复,不幸的是,没有一个能为我工作。
我正在使用 CodeIgniter_2.1.4 版本。
我有一个简单的注册表单,我需要通过Ajax请求将其数据插入到数据库中。如果表单中没有错误:
POST path/index.php/controller/method 500 (Internal Server Error)
我尝试过以下解决方案,但我仍然收到错误:
config.php
文件中启用了CSFR保护:$config['csrf_protection'] = TRUE;
form_open()
和form_close()
标记,因为CI文档说如果使用form_open()
,它会自动在表单中插入隐藏的csrf字段。的Javascript
$("#sign-up").submit(function(e){
e.preventDefault();
alert($(this).serialize());
$.ajax({
method:"POST",
data:$(this).serialize(),
url:"<?php echo site_url('viewer/signup_process')?>",
success:function(data){
$("#update").html(data);
}
}) ;
});
PHP代码
public function signup_process()
{
$this->form_validation->set_rules("firstname","Firstname","required");
$this->form_validation->set_rules("lastname","Lastname","required");
$this->form_validation->set_rules("username","Username","required|max-length[10]");
$this->form_validation->set_rules("password","Password","required|min-length[5]");
$this->form_validation->set_rules("telephone","Telephone","required");
$this->form_validation->set_rules("email","email","required|valid_email");
$this->form_validation->set_rules("terms","Terms & Conditions","callback_agree_to_terms");
if(!$this->form_validation->run()){
//There are errors
$data["title"]="Errors";
$data["errors"]= validation_errors();
$this->load->view("public/errors",$data);
} else {
$viewer=array(
"firstname"=> $this->input->post("firstname"),
"lastname"=> $this->input->post("lastname"),
"username"=> $this->input->post("username"),
"password"=> $this->encrypt->sha1($this->input->post("password")),
"telephone"=> $this->input->post("telephone"),
"email"=> $this->input->post("email")
);
$create_result= $this->Viewer_model->create_viewer($viewer);
if($create_result){
$data["message"]="Registration successful..Please sing in";
$this->load->view("public/success",$data);
}
}
}
这可能是什么原因?
答案 0 :(得分:2)
尝试更改
method:"POST",
到
type:"POST",
答案 1 :(得分:1)
我可以通过使用htaccess重写索引文件来解决问题。
步骤
1)创建一个.htaccess文件并将其保存在 root 目录中
这是.htaccess文件
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|css|js|img|robots\.txt)
RewriteRule ^(.*)$ /project_name/index.php/$1 [L]
注释 - 您的css,js,img文件夹可能有不同的名称。您可能有多个文件夹。相应地调整它。
2)转到application-&gt; config-&gt; config.php并生成
$config['index_page'] = '';
就是这样。
希望这将有助于未来的读者
答案 2 :(得分:0)
您是否已将表单验证模块包含在autoload
文件中?
否则,您需要在函数的第一行执行此操作:
$this->load->library('form_validation');