jQuery post не возвращает данных ответа

у меня есть этот код

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

});

});

мой сервер возвращает хэш с ключом flag. Однако этот код не возвращает мне данных для консоли или предупреждения , в то время как post-запрос успешен. Что я делаю не так?

3 ответов


Я бы согласился с Hemant_Negi, что это проблема с вами сервер не возвращает допустимый JSON. Следующий код, основанный на вашем, отлично работает (изменение URL-адреса там тоже, которое возвращает действительный 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);
});

Если вы измените этот URL, вызов fail () должен предупредить сообщение об ошибке.


это происходит, когда сервер не возвращает допустимый JSON

сначала попробуйте без типа данных, как показано ниже..

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

        });

убедитесь, что вы берете любой выходной код отладки в сценарии на стороне сервера.

кроме того, с помощью Firebug или chrome tools, вы можете легко проверить ответ от сервера, чтобы увидеть, если он находится в допустимом формате JSON.