无法从Ajax请求中获取responseText

时间:2013-10-10 13:52:55

标签: javascript jquery ajax

我正在进行ajax调用并在响应中获取一个Object。

当我尝试获取responseText时,它告诉我它未定义:

var results = API.get('users', { username: un, userpass: pw } );
console.log(results); //the object response below
console.log(results.responseText); // returns undefined

对象看起来像(我删除了无用的部分响应):

Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
    responseJSON: Object
    responseText: "{"orderBy":"","orderDesc":false,"rows":[{"id":"26","name":"Jordan Simon","username":"jordan","userpass":"jordan"}],"totalResults":1,"totalPages":1,"pageSize":1,"currentPage":1}"
    statusText: "OK"
    __proto__: Object

我做错了什么?你能举个例子吗?

1 个答案:

答案 0 :(得分:1)

你在评论中有答案,但这里有一个完整的解释:

API.get正在对某个服务器进行异步调用,该服务器可能会或可能不会在将来的某个时间返回响应。虽然在API.get调用之后但在返回响应之前执行了console.log(results)。

大多数AJAX调用允许您指定一个异步操作完成后立即执行的回调函数。

例如在jQuery中:

$.get( "ajax/test.html", function( data ) {
  $( ".result" ).html( data );
  alert( "Load was performed." );
});

该方法看起来像这样:

$.get(url, callback) {
    //do some stuff here with the URL
    //get the response text, get the XHR response, anything goes really

    //execute the callback method passed by the user
    callback(responseText);

    //return XHR response
    return ajaxResults;
}

注意$ .get方法中的第二个参数是一个函数。这是异步AJAX调用的基础。

您的API可能有所不同,也许您有一个需要注册的事件,也许您可​​以出于任何目的关闭异步。查看您的API文档并祝您好运!