2016-12-21 1 views
0

Asyncを使用してJavascriptを使用して2つの別々のページをヘッダとフッタとして使用したいと考えています。XHRリクエストはJQUERYを使用せずに 'undefined'を取得します

WITHOUT JQuery。

ページオブジェクト:

load: function(v, cb) { 
     tmp.xhr = new XMLHttpRequest(); 
     tmp.xhr.open('GET', v, true); tmp.xhr.send();  
     tmp.xhr.onreadystatechange = function (e) { 
      if (tmp.xhr.readyState == 4 && tmp.xhr.status == 200) { 
       return tmp.xhr.responseText; cb(); 
      } 
     } 
     } 

TPLオブジェクト:

appendTo: function(e, v) { document.getElementById(e).innerHTML = v; } 

これらの機能の両方が異なるオブジェクト

に配置され、それらを呼び出すために:

tpl.appendTo('header', tpl.load(tmp.views + 'header_generic_2')); 
tpl.appendTo('header', tpl.load(tmp.views + 'footer_generic')); 

どこ私のWebページでtmp.views is a variable for the directory level only

私は、次の内容が含まれています。

<div id='header'></div> 
<div id='footer'></div> 

と私が得る結果は次のとおりです。結果の

<div id="header">undefined</div> 
<div id="footer">undefined</div> 

画像:

Error given

などありますコンソールエラーません

しかし、応答は200で、すべてがデバッグに応じて動作しますなし: https://gyazo.com/95dba118fe9eebdb310f617168c8d763 https://gyazo.com/e446b7db7f0a62c280273869eac4d04a

答えて

1

あなたは、コールバック

tpl.load(tmp.views + 'header_generic_2',function(data){ 
    tpl.appendTo('header',data); 
}); 

で負荷を呼び出し、ときに戻ってデータを渡す必要がありますが取得されました。

+0

これを試して、未定義はなくなりましたが、(HTML)ページからのデータは表示されません。 – user3052975

+0

ここでプロジェクト全体を見ることができるならhttp://spleric.com/test – user3052975

+0

グローバル変数として 'tmp'を宣言し、すべてのリクエストに' tmp.xhr'を使用したので、1つの結果しか返せません。私は自分の答えを編集し、 'xhr'リクエストをロード関数のローカル変数として宣言しました。あなたのテストサイトにも誤植があります。 'tmp.xhr.readyState = XMLHttpRequest.DONE 'は '==='でなければなりません – rckrd

関連する問題