Не стоит так активно ждать результата. Когда вызов AJAX успешно завершен, вызывается функция обратного вызова. В вашем случае кажется, что это plr
(хотя не совсем понятно, что именно делает LoadContentInto
).
Кажется, у вас есть соблазн сделать синхронный обратный вызов успеха AJAX. Иногда у меня были такие страсти, но до сих пор всегда обнаруживалось, что есть и асинхронный путь.
Может быть, вы хотите что-то подобное:
function openX() {
LoadContentInto("Default.aspx", plr);
var obj = null;
var done = false; // you have your variable global! Make it local!
function plr() {
x = this.AJAXObject.responseText;
// ...
// put your code here
// ...
alert("Done!");
done = true;
}
setTimeout(function(){
if (!done) {
alert("Please wait!");
// Does the response and/or the operation after the responseText arives take a long time?
// Based on that decide how to inform the user
}
}, 100); // Set the timeout to right value.. based on your needs
}
Несколько комментариев к вашему коду:
- вы объявили
done
глобальной переменной, весьма вероятно, что она должна быть локальной
while (done != true)
намного чище, чем while (!done)