php - CodeIgniter + jQuery Ajax 运行错误但成功调用回调

标签 php jquery ajax codeigniter

我的 Codeigniter:(您认为有错误吗?)

    public function KayitOl()
{
    $data = array(
        'kullaniciadi' => $this->input->post('kullaniciadi'),
        'email'        => $this->input->post('email'),
        'sifre'        => $this->input->post('sifre')
        );

    $kuladi =  $this->input->post('kullaniciadi');
    $sorgu  =  $this->db->query("SELECT * FROM uyeler WHERE kullaniciadi='".$kuladi."'");  

    if ($sorgu->num_rows() > 0) 
    {
        $response_array['status'] = 'error';
        echo json_encode($response_array);
    }
    else
    {
        $this->db->insert('uyeler',$data);
        $response_array['status'] = 'success';
        echo json_encode($response_array);
    }

}

我的 jQuery 代码:(您认为有错误吗?)

$(".submit").on("click", function(){
            var kuladi   = $("#kullaniciadi").val();
            var email    = $("#email").val();
            var sifre    = $("#sifre").val();
            var confirm  = $("#sifreonay").val();
            var hata     = $("#hata").val(); 
            var checkbox = $("#checkbox").is(":checked"); 
            var link     = "http://tantunisiparis:8080/main/anasayfa/KayitOl";

            var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i;

            if (!kuladi || !email || !sifre) {
                $("p#hata").removeClass("hidden");
                $("p#hata").html("Boş bırakılan alanlar var!");
            }

            else if (!pattern.test(email)) {
                $("p#hata").removeClass("hidden");
                $("p#hata").html("Lütfen geçerli bir e-mail giriniz!");
            }

            else if (!checkbox) {
                $("p#hata").removeClass("hidden");
                $("p#hata").html("Kullanıcı Sözleşmesini Kabul Etmediniz.");
            }

            else if (sifre != confirm) {
                $("p#hata").removeClass("hidden");
                $("p#hata").html("Şifreler eşleşmiyor!");
            }

            else{
                $.ajax({
                    type :"POST",
                    url  :link,
                    data : $("#kayitform").serialize(),
                    success: function (data){
                          console.log(data.status);
                          alert("Success döndü");
                      },
                    error: function (data){
                           console.log(data.status); 
                           alert("Error döndü");
                    }
                });
            }
         });

为什么我会遇到这样的问题?

任何回答尝试都值得赞赏。任何正确的答案都将受到双重赞赏;)

谢谢!

最佳答案

您需要设置HTTP状态代码。因此,如果出现错误,请在 Controller 中调用此代码 $this->output->set_status_header(500);

public function KayitOl()
{
    $data = array(
        'kullaniciadi' => $this->input->post('kullaniciadi'),
        'email'        => $this->input->post('email'),
        'sifre'        => $this->input->post('sifre')
        );

    $kuladi =  $this->input->post('kullaniciadi');
    $sorgu  =  $this->db->query("SELECT * FROM uyeler WHERE kullaniciadi='".$kuladi."'");  

    if ($sorgu->num_rows() > 0) 
    {
        $response_array['status'] = 'error';
        $this->output->set_status_header(500); // or any other code
        echo json_encode($response_array);
    }
    else
    {
        $this->db->insert('uyeler',$data);
        $response_array['status'] = 'success';
        echo json_encode($response_array);
    }
}

您可以在文档 http://www.codeigniter.com/userguide3/libraries/output.html 中阅读有关输出类的更多信息。

关于php - CodeIgniter + jQuery Ajax 运行错误但成功调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367732/

相关文章:

php - Yii。如何添加 css "error"类以在表单提交时输入?

php - 查询 SQL DB TableView 并在 HTML 表中显示结果

php - 函数第一次运行时在 mysql 中更新了错误的数据

Javascript:按 ID 选择元素

javascript - 如何将元素的宽度设置为窗口宽度的一半

jquery - 如何修复设备上的图像

javascript - 通过 AJAX 加载页面并执行 javascript 和 CSS

php - Laravel - 很多用于使用 Blade 渲染 View 的访问器(Mutators)

jquery - $.Ajax 不带 "_"查询字符串参数

javascript - 将 ajax 响应数组对象转换为 javascript 数组?