在我的劇本,我有一個AJAX調用一個PHP文件,我想有調用下面的腳本被執行做同步的AJAX腳本
這裏的其餘部分之前完成是我指的腳本:
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請求被製成控制檯中看到的,然後將腳本的其餘部分獲得前阿賈克斯已經完成導致這個調用執行現在:
console.log (player_level);
返回未定義,而不是它應該是因爲ajax尚未完成的值。
爲了澄清我的問題是:
我應該怎麼做腳本的其餘部分之前Ajax調用完成會得到處理?
謝謝
[documentation](http://api.jquery.com/jQuery.ajax/)非常清楚地解釋瞭如何使請求同步。 – Quentin 2013-04-10 16:57:51
同步ajax通常被認爲是對用戶體驗不利的事情,因爲它在等待響應時凍結瀏覽器。除非在特殊情況下(甚至不能想到一個),那麼編寫異步ajax會更好。 – Pointy 2013-04-10 16:59:01
@Pointy對於'unload'回調,你的ajax調用必須是同步的,否則它不會觸發。想想那些情況是你想讓服務器知道「用戶正在註銷」什麼的。 – 2013-04-10 17:01:01