Я создал объект javascript и связанный метод, который выглядит очень похоже на это. «getUserInfo» выполняется в $ (). ready (function () {}
function userObject(userId)
{
this.userId = userId;
this.getUserMachineList = function(infoId, machineListId)
{
jQuery.post(machDBPHPPath + "/listAllUserMachineAccess.php",
{ userId : this.userId, sid : Math.random() },
function(xmlDoc)
{
var userMachineListXml = document.createElement("xml");
//populate serialized xml in dom element here
}
});
}
Я пытаюсь прочитать содержимое заполненного элемента xml в populatePage (), см. Ниже.
Проблема в том (я уверен, что многие из вас видели это раньше) в том, что элемент xml, созданный getUserInfo, не существует, когда я вызываю populateUserPage, который выполняет дополнительные вызовы ajax на основе информации в этом xml. элемент.
$().ready(function()
{
//create sessionUser here..
sessionUser.getUserMachineList(USER_MACHINE_INFO_ID, USER_MACHINE_XML_ID);
populatePage();
});
Я использовал setTimeout с populatePage, как обходной путь в прошлом, но мне это не нравится - это хак, и он не всегда работает.
В идеале, есть какой-то метод ожидания появления этого идентификатора в DOM, о котором я не знаю, что было бы замечательно, но пока не найдено ..
Или это может быть общим недостатком веб-дизайна, и мне следует перепроектировать мой код на стороне сервера, чтобы учесть эту асинхронность?
Спасибо за вашу помощь ..
-Larry