#ajax #jquery
#ajax #jquery
Вопрос:
У меня есть следующая функция, которая отлично работает при привязке к событию onClick().. Однако, если событие запускается onReady(), оно не выполняет свою работу .. Добавление alert() в любой момент метода позволяет ему работать нормально.. Итак, я знаю, что это связано с асинхронным AJAX-запросом. Мне просто не повезло успешно добавить логику отложенного или обратного вызова .. не уверен, как к этому подойти.
Существует ли простой способ улучшить метод? В конечном итоге я вызываю этот метод onOpen() для диалога jQueryUI.. Но диалоговое окно запускается и становится пустым..
function performElqLookups(formName) {
var elqTracker = new jQuery.elq(459);
//first do the visitor lookup
var visitorLookup = 'ba109a0a75294aed95ca72b0bc3b345d';
elqTracker.getData({ key: visitorLookup, lookup: "", success: function() {
//then check for an email address on the visitor record and do a contact data lookup if there is one
if (typeof GetElqContentPersonalizationValue == "function") {
var email = GetElqContentPersonalizationValue("V_ElqEmailAddress");
if (email != "") {
var contactLookup = 'c7e9dd7150464162af6fe1cf471627e5';
elqTracker.getData({ key: contactLookup, lookup: "<C_EmailAddress>" email "</C_EmailAddress>", success: function() {
populateForm(formName);
trackPage().done(function( guid ) {
$('#elqCustomerGUID').val(guid);
});
}});
}
}
}});
}
Ответ №1:
вы можете установить Ajax на синхронный, перейдя async:false
к любым вызовам ajax, таким как get() load()
и ajax()
кроме того, помните, что вы всегда должны завершать свой код с $(function(){..code in here..})
помощью, потому что это сокращение для document.onReady
Комментарии:
1. В этом случае эти вызовы выполняются во внешних сценариях (поэтому у меня нет возможности настроить запрос .. есть другие предложения?)
2. вы хотите сказать, что это было бы невозможно сделать?
elqTracker.getData({ key: visitorLookup, lookup: "", async: false,success: function() {...
3. Да; Я так считаю .. Поскольку getData() в данном случае в методе, определенном извне.. Я не верю, что он будет принимать или уважать асинхронный параметр .. т.е. code.google.com/p/eloqua-tracking/wiki/DataLookups
4. используете ли вы firebug или инструменты разработчика Chrome? это выдаст сообщение об ошибке и сообщит вам содержимое и статус любых ajax-запросов