2017-02-24 13 views
0

jQuery約束を使用して別のhtmlページ内に1つのhtmlページをロードしたいと思います。しかし、ロードできませんでした。以下のコード..jQuery 1つのhtmlページを別のものにロードする約束

(function ($) { 
$(document).ready(function() { 

var loadPageLoaded = function(){ return $('div.loadContainer').load('load.html').promise();} 
var loadAwardsPage = function(){ return $('div#maincontainer').load('assets/templates/awards.html').promise();} 


loadPageLoaded().then(loadAwardsPage()); 


}); 
})(jQuery) 

答えて

1

あなたは約束のオブジェクトを格納し、それらの約束が満たされているかどうかを調べるために$.when()を使用することができますです。それは関数呼び出しの引数として配列を受け入れるため.apply()を使用して、この例ここで

function createPromise(baseInfoTemplate) { 
    var baseData = { /* foobar */ }; 

    return $.Deferred(function(promise) { 
     setTimeout(function() { 
      $('#foo').append('<li>' + baseInfoTemplate + ' --> success</li>'); 
      promise.resolve(); 
     }, ~~(Math.random() * 8000)); 
    }).promise(); 
} 

var myPromises = [ ]; 

myPromises.push(createPromise('some data')); 
myPromises.push(createPromise('even moar data')); 
myPromises.push(createPromise('foo bar heay')); 
myPromises.push(createPromise('hey yooo')); 
myPromises.push(createPromise('who wants some?')); 

$.when.apply(null, myPromises).done(function() { 
    $('#foo').append('<li class="last">all done!</li>'); 
}); 

のような。この場合、すべての約束オブジェクトを.when()に渡しています。コードの下

ここでは例JsFiddle Example

+0

私は私が時間によってライン7でDOMは、$( 'div要素#のmaincontainerと準備ができていない、これは動作しませんでした – alowsarwar

0

が私のために働いた、コードは大丈夫だったが、それは最初のページをロードするのにかかる時間の問題でした。 2ページ目は2〜3秒後にしかロードできませんでした。

(function ($) { 
    $(document).ready(function() { 

    var loadPageLoaded = function(){ return $('div.loadContainer').load('load.html').promise();} 
    var loadAwardsPage = function(){ 
     var maincontainer = $('div#maincontainer'); 
     return $.Deferred(function(promise) { 
      maincontainer.load('assets/templates/awards.html'); 
      promise.resolve(); 
     }).promise(); 
    } 
    loadPageLoaded().done(function() { 
     setTimeout(function() { 
     loadAwardsPage(); 
     }, 2000) 
    }); 
    }); 
})(jQuery) 
0

then

あなたのコードが実行される

loadPageLoaded()loadAwardsPage()はすぐに...結果(約束を).thenに渡される引数としての機能(onResolvedに1つ、onRejectedための第二)を取りそれは、引数だ...しかし.then関数ではないものを無視して - それ故にエラー

簡単な解決策は.thenへの引数として機能loadAwardsPageを渡すことはありません - すなわち()

を削除します
(function($) { 
    $(document).ready(function() { 
     var loadPageLoaded = function() { 
      return $('div.loadContainer').load('load.html').promise(); 
     } 
     var loadAwardsPage = function() { 
      return $('div#maincontainer').load('assets/templates/awards.html').promise(); 
     } 
     loadPageLoaded().then(loadAwardsPage); 
    }); 
})(jQuery) 
+0

私のブラウザのdevのツールでは第二の負荷のためのXHRリクエストが表示されていないのどちらかの方法')、ここで私は数秒間setTimeoutをします。できます。 – alowsarwar

+0

これは '$(document).ready'の内部にあるため、DOM **は**準備完了です –

関連する問題