2013-08-08 9 views
5

Ich habe diesen CodejQuery Post lieferte keine Antwortdaten

$(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; 

}); 

});

Mein Server gibt Hash mit Schlüssel flag zurück. Dieser Code gibt mir jedoch keine Daten an die Konsole oder den Alarm zurück, während die Postanforderung erfolgreich ist. Was mache ich falsch?

Antwort

3

würde ich mit Hemant_Negi darüber einig, dass dies ein Problem mit Ihnen ist Server nicht zurückkehren gültiger JSON. Der folgende Code basiert auf Ihnen funktioniert (Änderung der URL in dort auch die gültige JSON zurückgibt):

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); 
}); 

Wenn Sie diese URL ändern, um den Anruf() fehlschlagen sollte eine Fehlermeldung aufmerksam machen.

+0

Ich benutze Sinatra als Backend, und ich bin ziemlich sicher, ich habe gültige JSON dort. Mehr als ich habe völlig ähnlichen Code auf meinem Backend für ein anderes Stück js-Code, und das funktioniert gut – Avdept

+0

Wenn Sie einen Browser wie Chrome verwenden, öffnen Sie die Entwickler-Tools (F12) und beobachten Sie die Registerkarte Netzwerk, wie Ihr Code die AJAX-Anfrage macht. Wenn Sie auf die Anfrage klicken, zeigt Chrome eine Reihe von Tabs an (Headers/Preview/Response/Cookies/Timing). Wenn Sie sich den Inhalt der Registerkarte "Antwort" ansehen, sollte klar sein, ob Sie eine gültige JSON-Antwort haben oder nicht. Firebug hat eine ähnliche Net-Registerkarte, wenn Sie FF verwenden, und ich nehme an, IE hat eine Entsprechung oder verwendet Fiddler. – Barrie

3

Es passiert, wenn Sie Server nicht über eine gültige JSON

versuchen, es ohne Datentyp wie unten erste Rückkehr ..

$.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

Stellen Sie sicher, dass Sie in Ihrem serverseitigen Skript Debugging-Ausgabecode verwenden.

Mithilfe von Firebug- oder Chrome-Tools können Sie die Antwort vom Server einfach überprüfen, um festzustellen, ob sie im gültigen JSON-Format vorliegt.