0
私は利用可能な生徒のリストを表示するために使用しているjQueryの先読み制御を持っています。ユーザーがより多くの文字を入力すると、リストが絞り込まれます。現在、ユーザーが最初の文字を入力するとnullが返されます。私はJavaScriptのコールバック関数を使用してこれを行ってきました。私はそれをデバッグしてきましたが、なぜそれがnullを返すのか理解できました。あなたの助けに感謝します。私のAjaxコールが最初のコールでnullを返す理由
API呼び出しとJavaScriptファイル:あなたはコールバックから受信したデータに依存しているコードを書きたい場合は、あなたがのために待たなければならないので、
var api = (function (window, document, $, undefined) {
'use strict';
var currentResult;
var CallAPI = function (obj, callback) {
if (typeof (callback) === 'function') {
$.ajax({
url : obj.url,
method : obj.method,
dataType : obj.dataType,
contentType : obj.contentType,
data : obj.data,
cache : false,
success : function (result) {
callback.call(this, result);
},
error: function (jqXHR, textState, errorThrown) {
return ('An error occur. ' + jqXHR.responseText);
}
})
}
};
var Service = function (obj) {
CallAPI(obj, function (result) {
currentResult = result;
});
return currentResult;
}
window.Service = Service;
return {
Service: Service
}
})(window, document, jQuery);
var students = api.Service(obj);
console.log(students); //null when the first letter is typed. Then, it started to return more data.
非同期呼び出しから戻ることはできません – epascarello
非同期AJAX呼び出しを行い、呼び出しが完了した後にのみデータを利用できます。したがって、AJAX呼び出しが終了する前に 'students'を記録している場合、' null'になります。 '$ .ajax({})。done(function(){});'を使うと、呼び出しが終了したときに何かを実行できます。 –