Сделать синхронным в ajax javascript
В моем скрипте у меня есть вызов ajax к файлу php, и я хотел бы завершить вызов до выполнения остальной части скрипта ниже
Вот сценарий, на который я ссылаюсь:
function game_settings(state){
if(state == "load"){
ui.load_game();
//do ajax call to load user last save
var dataString = {"user_data": "true"};
$.ajax({
type:"POST",
url:"PHP/class.ajax.php",
data: dataString,
dataType: 'JSON',
success: function(success) {
player_details_init(success)
},
error: function(){
alert("ERROR in User data");
}
});
console.log (player_level);
//scene.load("level_"+level);
//instantiate a heroObject
player = new Player(20,20,game_width, game_height);
// set it's image to the proper src URL
player.image.src = "images/Mage_Sprite.png";
// once the image has completed loading, render it to the screen
player.image.onload = function()
{
player.render();
};
lastUpdate = Date.now();
}
Так, например, прямо сейчас, когда скрипт запускается, я вижу в консоли, что выполняется запрос ajax, а затем остальная часть скрипта исполняется до того, как завершится ajax, что приводит к следующему вызову:
console.log (player_level);
возвращать неопределенное значение, а не значение, которое должно быть, потому что ajax еще не завершен.
Чтобы уточнить мой вопрос:
Как мне завершить вызов ajax до того, как будет обработана остальная часть скрипта?
Спасибо
2 ответа
Вы можете поместить оставшуюся часть сценария в обратный вызов успеха вызова AJAX или установить async
свойство config вызова AJAX в false, что сделает его синхронным.
Поместите "остальную часть сценария" в функцию обратного вызова success.