0

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

当我尝试获取 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

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

4

1 回答 1

1

您在评论中有答案,但这里有一个关于发生了什么的完整解释:

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

大多数 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 文档,祝您好运!

于 2013-10-10T14:11:52.257 回答