在AJAX调用之后调用Javascript函数

时间:2012-06-01 23:00:26

标签: javascript jquery

我有一个javascript函数,我正在传递一个functionName,我需要在进行ajax调用后调用它。 ajax调用返回一些包含对js文件的引用的html。传递给我的函数的functionName在html中,但它引用了js文件中的对象。我注意到物体有时存在,有时却不存在。有没有办法确保对象始终存在(或等待它存在),然后只调用javascript函数。请注意,我不知道对象变量是什么,所以有没有办法确保脚本文件已在dom中加载,然后调用该函数。

   function(functionName)
   {
      $.ajax({
    url: properties.url,
    type: properties.type,
    data: properties.data,
    dataType: properties.format,
    success: function (data) {
     // data contains <div>myname</div><script src="/myfile.js" type="text/javascript"></script>
     // Put the data in some div
     BindData(data);

     // How to ensure that the script myfile.js is loaded in dom before I call eval
     eval(functionName);
     }   );      

    }

2 个答案:

答案 0 :(得分:2)

function(functionName)
   {
      $.ajax({
    url: properties.url,
    type: properties.type,
    data: properties.data,
    dataType: properties.format,
    success: function (data) {
     // data contains <div>myname</div><script src="/myfile.js" type="text/javascript"></script>
     // Put the data in some div
     BindData(data);

    //ensure the script has loaded.
    $.getScript($('script:first',data).attr('src'), function(){
            eval(functionName);
    });

    });      

    }

答案 1 :(得分:0)

您可以尝试在ajax调用结束之前查看数据。 不确定但是,如果数据是“未定义”,您可以检查类似这样的内容

var data = GetAjaxData();
while(typeof data === undefined);
bind, eval ecc ecc

但是如果GetAjaxData返回其他内容,这将会改变。 您可以尝试相同的事情,但在此之前:

var data = null;
data = GetAjaxData();
while(data == null);
do stuff

您还可以使用成功处理程序回调尝试$ .ajax jquery 希望帮助