1

我有一个 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);
     }   );      

    }
4

2 回答 2

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

    });      

    }
于 2012-06-02T00:49:59.253 回答
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 与成功处理程序回调希望帮助

于 2012-06-01T23:06:56.960 回答