1

ajax呼び出しを行った後に呼び出す必要のあるfunctionNameが渡されるjavascript関数があります。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

成功ハンドラーのコールバックを使用して$.ajaxjqueryを試すこともできます。

于 2012-06-01T23:06:56.960 に答える