2013-08-08 9 views
5

Mam ten kodjQuery pocztowe zwraca żadnych danych odpowiedzi

$(document).delegate('#login', 'pageinit', function(event) { 

console.log('inside login page') 
$('#loginform').submit(function() { 

    // Get the value of the username and password 
    var myusername = $("#username").val(); 
    var mypassword = $("#password").val(); 

    // Post to the login route 
    $.post(global_urlstub + '/customer_login', {username: myusername, password: mypassword}, function(data) { 

     alert(data); 
     console.log(data); 
     if (data.flag == true) { 
      alert('123'); 
      console.log(data); 
      jQuery.mobile.changePage('#page1'); 
     } 
     else { 
      alert('12345'); 
      console.log(data); 
      $('#errmsg_login').html(data.msg); 
     } 

    }, "json"); 

    return false; 

}); 

});

Mój serwer zwraca skrót z kluczem flag. Jednak ten kod nie zwraca mi żadnych danych do konsoli lub alertu, a prośba o podanie powiodła się. Co ja robię źle?

Odpowiedz

3

zgadzam się z Hemant_Negi że jest to problem z wami serwer nie wraca prawidłowy JSON. Poniższy kod na podstawie twoich działa dobrze (zmiana adresu URL tam zbyt która zwraca poprawny JSON):

var myusername = 'a', mypassword = 'b'; 
$.post('http://ip.jsontest.com', {username: myusername, password: mypassword}, function(data) { 
    alert(data.ip); 
    console.log(data); 
    if (data.flag == true) { 
     alert('123'); 
     console.log(data); 
     jQuery.mobile.changePage('#page1'); 
    } 
    else { 
     alert('12345'); 
     console.log(data); 
     $('#errmsg_login').html(data.msg); 
    } 
}, "json").fail(function(jqXHR, textStatus, errorThrown) { 
    alert(textStatus); 
}); 

przypadku zmiany tego adresu URL, połączenie nie powiedzie() powinien poinformować o błędzie.

+0

im używać sinatra jako backend, i jestem pewien, że mam tam ważny json. Więcej mam zupełnie podobny kod na moim zapleczu dla innego fragmentu kodu js, i to działa dobrze – Avdept

+0

Jeśli używasz przeglądarki takiej jak Chrome, otwórz narzędzia programistyczne (F12) i obserwuj kartę Sieć, gdy twój kod tworzy żądanie AJAX. Po kliknięciu prośby Chrome wyświetli serię zakładek (Nagłówki/Podgląd/Odpowiedź/Cookies/Czas). Jeśli spojrzysz na zawartość karty odpowiedzi, powinno być całkiem jasne, czy masz prawidłową odpowiedź JSON, czy nie. Firebug ma podobną zakładkę Netto, jeśli używasz FF i zakładam, że IE ma jakiś odpowiednik lub używa Fiddlera. – Barrie

3

Zdarza się, gdy serwer nie zwraca ważnego JSON

spróbować bez typu danych najpierw jak poniżej ..

$.post(global_urlstub + '/customer_login', {username: myusername, password: mypassword}, function(data) { 

      alert(data); 
      console.log(data); 
      if (data.flag == true) { 
       alert('123'); 
       console.log(data); 
       jQuery.mobile.changePage('#page1'); 
      } 
      else { 
       alert('12345'); 
       console.log(data); 
       $('#errmsg_login').html(data.msg); 
      } 

     }); 
0

Upewnij się, że bierzesz kod wyjściowy debugowania w skrypcie po stronie serwera.

Ponadto za pomocą narzędzi Firebug lub chrome można łatwo sprawdzić odpowiedź serwera, aby sprawdzić, czy jest on w prawidłowym formacie JSON.

Powiązane problemy