这是在谷歌浏览器上找到的错误消息:
POST http://localhost/display/register/registerUser 500(内部服务器错误)
我的项目文件名是"显示"。
一个名为&#34的寄存器文件;注册" ,它有一个名为" registerUser"的函数。所有这一切都是获取用户的输入,并将其与数据库进行比较以查看是否使用了该名称,如果有效将其存储到数据库中并为其提供成功消息,如果无效则给出错误消息。
$username=$this->input->post('name');
$password=$this->input->post('password');
$result=$this->user->checkExistUser($username);
if(!$result){
$data=array(
'username'=>$username,
'password'=>md5($password)
);
$this->user->register($data);
echo "<script>alert('You have success registered');</script>";
$this->load->view('home_view');
}
else{
echo "<script>alert('Sorry, this email address has been used!');</script>";
$this->load->view('registerView');
}
这是我的名为registerView的视图文件
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Stock game</title>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js">
</script>
</head>
<body>
<div id="container">
<h1>Welcome to Stock game!</h1>
<div id="body">
<p>This is the register page</p>
</div>
<div>
<form name="userform" id="userform" >
<input type="text" name="name" placeholder="Name"/>
<input type="text" name="password" placeholder="Password"/>
<button name="submit" value="submit">Register</button>
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('form#userform').on('submit',function(e){
e.preventDefault();
var name=$("#name").val();
var password=$("#password").val();
$.ajax({
type:'POST',
url:'register/registerUser',
data:
{'name':JSON.stringify(name),'password':JSON.stringify(password)},
dataType:'JSON',
success: function(response){
if(response=="success"){
alert("Yes login");
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(xhr.responseText);
alert(thrownError);
}
});
});
});
</script>
</div>
<br/>
</body>
</html>
我已经使用简单的表单帖子(表单action = xxx,method = post)测试了控制器和模型类,并且没有错误。 我搜索了几乎所有有关此问题的stackoverflow问题,但我仍然无法修复它,我希望有人可以帮助我。
答案 0 :(得分:1)
您无法在ajax调用中加载视图
$this->load->view('home_view');
以上控制器错误
将控制器更改为此代码
$username=$this->input->post('name');
$password=$this->input->post('password');
$result=$this->user->checkExistUser($username);
if(!$result){
$data=array(
'username'=>$username,
'password'=>md5($password)
);
$this->user->register($data);
echo "1";
}
else{
echo "0";
}
在视图文件中将您的代码更改为以下代码
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Stock game</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
</head>
<body>
<div id="container">
<h1>Welcome to Stock game!</h1>
<div id="body">
<p>This is the register page</p>
</div>
<div>
<form name="userform" id="userform" >
<input type="text" name="name" placeholder="Name"/>
<input type="text" name="password" placeholder="Password"/>
<button name="submit" value="submit">Register</button>
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('form#userform').on('submit',function(e){
e.preventDefault();
var name=$("#name").val();
var password=$("#password").val();
$.ajax({
type:'POST',
url:'<?php echo base_url()."register/registerUser"; ?>',
data: {'name':name,'password':password},
success: function(response){
if(response=='0'){
alert("Failed");
// with the result you can redirect to the view that is in controller
window.href.location = '<?php echo base_url()."yoursuccesscontroller/yoursuccessfunction"; ?>';
}
else {
alert('Success');
//with failure
window.href.location = '<?php echo base_url()."yourfailurecontroller/yourfailurefunction"; ?>';
}
}
});
});
});
</script>
</div>
<br/>
</body>
</html>
结果可以重定向到控制器中的视图
答案 1 :(得分:0)
在您的ajax中附加基本网址
url:<?php echo base_url(); ?>'register/registerUser',
答案 2 :(得分:0)
在这个问题上花了大约5个小时,我做了一个简单的步骤并发现了这个错误。我所做的是自己修改名称和密码值,所以不要在意什么是输入,只是为了测试我修改的数据是否会被发送到控制器,结果是肯定的,它存储在我的数据库。所以这个bug应该是我读取输入的方式,在我的名字标签中放入(id =&#34; name&#34; name =&#34; name&#34;之后),并做同样的事情对于密码标签,服务器不再给我500。