我正在进行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
我做错了什么?你能举个例子吗?
答案 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文档并祝您好运!