Не удается получить xmlhttprequest.responseText из JQuery - PullRequest
0 голосов
/ 19 мая 2010

Я новичок в JQuery.

Я получил эту функцию

function verify_at_bd(){                
    var u = "foo";
    var p = "bar";

    return $.post('auth.php', { name: u, password: p, mobile: '' },             
            function(result){         
                         return result;
                    },'json');   
}

Если я выполняю console.log (verify_at_bd ()), я получаю xmlhttprequest, но не могу получить доступ к свойству responseText. Я использую заголовок ("Content-Type: application / json") в моем PHP.

Я использую Firefox 3.6 на OS X.

Ответы [ 3 ]

2 голосов
/ 19 мая 2010

Вот так:

$.ajax({
  type: 'POST',
  url: 'auth.php',
  data: {name: 'foo', password: 'bar', mobile: ''},
  success: function(result, textStatus, xmlhttprequest){
        console.log( $.parseJSON(xmlhttprequest.responseText).status);
    },
  dataType: 'json'
});

Вот и все.

1 голос
/ 19 мая 2010

Ну, во-первых, XHR должен быть в ReadyState 4, чтобы получить responseText.

Во-вторых, мне кажется, что вы злоупотребляете $ .post (). Это асинхронный вызов, вы не обрабатываете результат $ .post (), вы имеете дело с результатом в вашем методе успеха (функция (result)).

Если вам действительно нужен reponseText, добавьте еще несколько аргументов к вашей функции успеха и перехватите там xhr.

См. Документацию jquery для $ .post, чтобы узнать, какой аргумент является xhr.

0 голосов
/ 19 мая 2010

Как сказал @ code поэт , вы используете метод $.post неуклюжим образом. Это асинхронный вызов, поэтому вы не можете ожидать немедленного возврата результата до тех пор, пока не завершится запрос AJAX POST. Если бы вы могли опубликовать код, который вы написали для обработки JSON, вы ожидаете, что этот function вернется, было бы легче посоветовать вам правильный способ структурировать ваш $.post ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...