[英]AJAX request with CodeIgniter keep giving forbidden error
我正在嘗試檢查CodeIgniter中是否存在用戶電子郵件。
這是我正在使用的CodeIgniter的控制器:
public function check_email() {
$email= $this->input->post('email');
echo "error";
if($email)
{
$this->load->model('auth/register_model');
$return_array = $this->register_model->check_member($this->input->post('email'));
if($return_array == true)
{
$json['success'] = 'false' ;
$json['exit'] = 'true';
die(json_encode($json,JSON_PRETTY_PRINT));
}
else
{
$json['success'] = 'true' ;
$json['exit'] = 'false';
die(json_encode($json,JSON_PRETTY_PRINT));
}
}
}
這是我正在使用的CodeIgniter模型:
public function check_member($email) {
$this->db->select('user_id')->from(DB_PREFIX .'publisher')->where('email', $email);
$q = $this->db->get();
if ($q->num_rows() == 1) {
return true;
}
return false;
}
這是我正在使用的CodeIgniter的AJAX:
function checkAvailability() {
if($("#email").val()) {
$(".showLiveEmail").addClass("fa fa-refresh fa-spin");
$(".showEmail").removeClass("has-success");
jQuery.ajax({
url: "auth/register/check_email",
data:'email='+$("#email").val(),
type: "POST",
success:function(data){
if(data.success=="true")
{
$(".showLiveEmail").removeClass("fa fa-refresh fa-spin");
$(".showEmail").removeClass("has-error")
$(".showLiveEmail").removeClass("fa fa-times");
$(".showLiveEmail").addClass("fa fa-check");
$(".showEmail").addClass("has-success");
}
else
{
}
},
error:function (){}
});
}
else
{
$(".showLiveEmail").addClass("fa fa-times");
$(".showEmail").removeClass("has-success")
$(".showEmail").addClass("has-error")
}
}
有人可以幫我嗎? 我剛剛啟動CodeIgniter,現在面對這個問題。
錯誤發生在您的ajax請求調用中。 下面,我附上相同的正確代碼。 Ajax URL和Passing Data這是您現在需要關心的兩件事,否則很好:
function checkAvailability() {
if($("#email").val()) {
$(".showLiveEmail").addClass("fa fa-refresh fa-spin");
$(".showEmail").removeClass("has-success");
var getEmail = $("#email").val();
jQuery.ajax({
url: "<?php echo base_url('auth/register/check_email'); ?>",
data:{'email':getEmail},
type: "POST",
success:function(data){
if(data.success=="true")
{
$(".showLiveEmail").removeClass("fa fa-refresh fa-spin");
$(".showEmail").removeClass("has-error");
$(".showLiveEmail").removeClass("fa fa-times");
$(".showLiveEmail").addClass("fa fa-check");
$(".showEmail").addClass("has-success");
}
else
{
}
},
error:function (){}
});
}
else
{
$(".showLiveEmail").addClass("fa fa-times");
$(".showEmail").removeClass("has-success");
$(".showEmail").addClass("has-error");
}
}
這應該工作。 讓我知道您是否遇到任何錯誤
像下面的那樣修改控制器
public function check_email() {
$email= $this->input->post('email');
//echo "error"; // this is not needed here
if($email)
{
$this->load->model('auth/register_model');
$return_array = $this->register_model->check_member($this->input->post('email'));
if($return_array == true)
{
$json['success'] = 'false' ;
$json['exit'] = 'true';
}
else
{
$json['success'] = 'true' ;
$json['exit'] = 'false';
}
echo json_encode($json);
}
else{
echo "error";
}
}
我瘦你在ajax調用中缺少dataType:'json'
。
嘗試這個
var email = $("#email").val();
$.ajax({
url: "<?php echo base_url(); ?>auth/register/check_email",
data:'email='+email,
type: 'POST',
dataType : 'json',
success:function(data)
{
if(data.success=="true")
{
$(".showLiveEmail").removeClass("fa fa-refresh fa-spin");
$(".showEmail").removeClass("has-error")
$(".showLiveEmail").removeClass("fa fa-times");
$(".showLiveEmail").addClass("fa fa-check");
$(".showEmail").addClass("has-success");
}
else
{
}
}
});
希望它能工作:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.