2011-10-15 23 views
0

我有以下函数,当绑定到onClick()事件时工作正常..但是,如果事件被触发onReady()它失败做它的工作..在方法的任何一点添加一个alert()允许它工作正常..所以我知道它与一个异步AJAX请求有关。我只是没有成功添加延迟或回调逻辑..不知道如何处理它。异步Ajax请求(表单人口)jQuery(onClick的作品,onReady不)

是否存在改进方法的简单方法?我最后呼吁jQueryUI的对话框这种方法的OnOpen()。但该对话框火灾和空..

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); 
         }); 
        }}); 
       } 
     } 
    }}); 
} 

回答

0

您可以设置阿贾克斯通过传递async:false任何ajax调用如get() load()ajax()为同步

也,记住,你应该总是与$(function(){..code in here..})包装你的代码,因为这是简写document.onReady

+0

在这种情况下,这些调用的外部脚本发生(所以我没有调整要求的能力..其他建议?) – patrick

+0

你说这样做是不可能的? '; elqTracker.getData({key:visitorLookup,lookup:“”,async:false,success:function(){...' – Tules

+0

是的;我相信是这样..因为在这种情况下getData()在外部定义的方法中。 。我不相信它会接受或尊重一个异步参数..即http://code.google.com/p/eloqua-tracking/wiki/DataLookups – patrick