无法从JQuery获取xmlhttprequest.responseText

时间:2010-05-19 05:05:01

标签: jquery json xmlhttprequest

我是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中。

我在OS X上使用firefox 3.6。

3 个答案:

答案 0 :(得分:2)

这里是:

$.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 :(得分:1)

嗯,首先,XHR必须处于readyState 4才能获得responseText。

其次,我觉得你在滥用$ .post()。这是一个异步调用,你不处理$ .post()的结果,你在成功方法中处理结果(函数(结果))。

如果你真的需要reponseText,那么在你的成功函数中添加一些参数并在那里捕捉xhr。

请参阅$ .post的jquery文档以查看哪个arg是xhr。

答案 2 :(得分:0)

正如@code poet所说,你正在以尴尬的方式使用$.post方法。这是一个异步调用,因此在AJAX POST请求完成之前,您不能指望立即返回结果。如果您可以发布您编写的代码来处理您期望function返回的JSON,那么建议您以正确的方式构建$.post响应更容易。