2016-12-21 1 views
0

Ich möchte zwei separate Seiten als meine Kopf- und Fußzeile über Javascript mit Async erhalten.XHR Anfrage erhalten Inhalt Ergebnisse 'undefiniert' ohne JQUERY

OHNE JQuery.

Seite Objekt:

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 Objekt:

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

sind Beide Funktionen befindet sich in verschiedenen Objekten

und sie nennen:

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

wo tmp.views is a variable for the directory level only

auf meiner Web-Seite habe ich den folgenden Inhalt:

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

und das Ergebnis I erhalten:

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

Bild von Ergebnis:

Error given

und es gibt keine Konsole Fehler

Aber die Antwort ist 200 und alles funktioniert nach Debug: https://gyazo.com/95dba118fe9eebdb310f617168c8d763 https://gyazo.com/e446b7db7f0a62c280273869eac4d04a

Antwort

1

Sie müssen mit einem Rückruf Last nennen

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

und die Daten wieder passieren, wenn es wurde geholt.

+0

Versucht dies, undefined ist weg, aber keine Daten werden von den (HTML) Seiten angezeigt. – user3052975

+0

Wenn es Ihnen hilft, können Sie das gesamte Projekt hier sehen: http://spleric.com/test – user3052975

+0

Da Sie 'tmp' als globale Variable deklariert haben und' tmp.xhr' für alle Anfragen verwenden, erhalten Sie nur ein Ergebnis zurück . Ich habe meine Antwort bearbeitet und die 'xhr' Anfrage als lokale Variable in der Ladefunktion deklariert. Sie haben auch einen Tippfehler in Ihrer Testseite, 'tmp.xhr.readyState = XMLHttpRequest.DONE ' sollte '===' – rckrd

Verwandte Themen