2016-07-14 3 views
2

Моих Codeigniter: (Как вы думаете, есть ошибка?)CodeIgniter + JQuery Ajax работает ошибку, но успешно обратный вызов вызывается

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._%-][email protected][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ü"); 
        } 
       }); 
      } 
     }); 

Почему у меня проблема?

Любые попытки ответа оценены. Любые правильные ответы удваиваются;)

Спасибо!

+0

Какую ошибку вы получаете ? –

+0

return alert («Успех döndü»); но запускать codeigniter в состояние ошибки? –

+0

Просто удалите json_encode с контроллера и echo $ response = 'error'; die; и в ajax выполните следующее: success: function (data) { console.log (данные); оповещение («Успех döndü»); }, – pradeep

ответ

0

Вам необходимо установить HTTP код статуса. Поэтому в случае ошибки вызовите этот код в контроллере $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

+0

Работал. Очень большой спасибо! –

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

я вещь, этот код будет работать для вас ...

+0

thanx, я пробовал, но не мог появиться окно с ошибкой. Но ошибка успеха:/ –

0

ли как этот

$response = '' 
if ($sorgu->num_rows() > 0) 
{ 
    $response = 'error'; 

} 
else 
{ 
    $this->db->insert('uyeler',$data); 
    $response = 'success'; 

} 
echo $response;die; 

асинхронность:

success: function (response){ 
      if(response == 'success'){ 
      console.log(response); 

      } 
      if(response == 'error'){ 
      console.log(response); 

      } 
     } 
+0

Спасибо всем! –