我正在尝试使用AJAX
中的CodeIgniter
提交表单。表单的值将保存在DB中,但控制器中设置的回复未显示在console.log
或alert
AJAX
代码中。
表格代码
<form class="form-signup" id="signup-form" method="post">
<input type="email" class="form-control" placeholder="Email" name="email" id="email">
<input type="password" class="form-control" placeholder="Password" name="password" id="password">
<button type="submit" class="btn btn-primary btn-lg btn-signup col-sm-offset-1" id="submit_form">SIGN UP</button>
</form>
脚本代码
<script type="text/javascript">
$(document).ready(function() {
$("#submit_form").click(function(event) {
event.preventDefault();
var email = $("input#email").val();
var password = $("input#password").val();
jQuery.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "student/register",
dataType: 'json',
data: {email: email, password: password},
success: function(res) {
if (res)
{
console.log(res); //need to print the result here
//alert(res);
}
}
});
});
});
控制器代码
public function register()
{
$data = array(
'email' => $this->input->post('email'),
'password'=>$this->input->post('password')
);
$email = $data['email'];
$password = $data['password'];
$this->db->where('email',$email);
$query = $this->db->get('student');
if ($query->num_rows() > 0)
{
echo "Email already exist";
}
else
{
$data1=array(
'email' => $email,
'password' => md5($password)
);
$final=$this->signin_model->register_user($data1);
return $final;
}
}
型号代码
public function register_user($data1)
{
$success=$insert_data = $this->db->insert('student', $data1);
if($success)
{
$result= "success ";
}
else
{
$result= "register unsuccessful";
return $result;
}
}
如代码所示,有3条消息
电子邮件已存在
成功
注册失败
在AJAX中,如果我console.log
或alert
,我希望根据流程显示上述3条消息中的任何一条。
如何在前端显示回复?
答案 0 :(得分:1)
你必须使用echo代替return才能获得成功。
请按以下方式更改
if ($query->num_rows() > 0)
{
echo "Email already exist";
}
else
{
$data1=array(
'email' => $email,
'password' => md5($password)
);
$final=$this->signin_model->register_user($data1);
echo $final;
}
并删除一起初始化的2个变量。这是不必要的。这可以。
$success = $this->db->insert('student', $data1);
希望这可以帮到你。
答案 1 :(得分:1)
您使用的ajax的数据类型为json。因此,如果您希望数据显示在前端,请在json中对回复进行编码,或者您需要更改或删除ajax中的json数据类型
答案 2 :(得分:0)
请更改dataType:&#39; json&#39; to dataType:&#39; text&#39;
<script type="text/javascript">
$(document).ready(function() {
$("#submit_form").click(function(event) {
event.preventDefault();
var email = $("input#email").val();
var password = $("input#password").val();
jQuery.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "student/register",
dataType: 'text',
data: {email: email, password: password},
success: function(res) {
if (res)
{
console.log(res); //need to print the result here
//alert(res);
}
}
});
});
});