2016-05-15 14 views
1

In der ComponentDidMount-Lebenszyklusmethode meiner Komponenten versuche ich, eine AJAX-Anforderung zu initiieren, um Daten clientseitig abzurufen (Daten müssen verfügbar sein, wenn die App geladen wurde). Bei der Inspektion ist mir aufgefallen, dass meine Versprechens-Kette sich auf die fail-Eigenschaft beschränkt. Dies ist verwirrend, da bei der Überprüfung über die Chrome Developer-Tools die Anforderung erfolgt und die Daten erfolgreich an das Versprechen zurückgegeben werden (siehe Screenshot). Ich vermutete, dass es die Geschwindigkeit sein könnte, mit der meine Komponente geladen wird, und ich habe eine componentWillMount-Lebenszyklusmethode versucht, die zu den gleichen Ergebnissen führt. Ich habe Daten über eine AJAX-Anfrage in Ordnung abgerufen, aber jetzt versuche ich, den Code mit asynchroner Funktionalität zu verbessern.JQuery Promise schlägt auf ComponentDidMount fehl React.JS

neuen Code versucht:

componentDidMount: function(){ 
     var returnedClassesString; 

     var user = window.globalValue; 

     function getQueries(user){ 
      returnedClassesString = $.ajax("/portals/0/js/get_classes_front.aspx?userName="+user).done(function(data,err){ 
       console.log('good' + data); 
      }).fail(function(data,err){ 
       console.log(err); 
      }); 

     } 

     getQueries(user); 



    }, 

componentDidMount Methode:

componentDidMount: function(){ 
     var returnedClassesString; 

     var user = window.globalValue; 

     $.when($.ajax("/portals/0/js/get_classes_front.aspx?userName="+user)).then(function(data, textStatus, jqXHR) { 
      // Handle both XHR objects 
      console.log(data); 
      }).fail(function(){ 
        console.log('failed'); 
      }); 
    } 

Screenshot von Chrome Dev-Werkzeuge (Network Traffic, fordere ich die erste Datei in dem Stapel): enter image description here

Screenshot von Chrome Dev-Tools (JavaScript-Konsole mit Meldung 'fehlgeschlagen'): enter image description here

+0

Ziemlich sicher, dass das Problem in der Ajax-Anfrage ist. Verwenden Sie '$ .ajax (...). Done(). Fail()' anstelle von '$ .when ($. Ajax()). Then(). Fail()'. Hat die Antwort etwas im Körper? Welche Art von Daten sollten Sie abrufen? –

+0

Hey, ich habe das gerade versucht und bin wieder 'gescheitert'. Diesmal loggte ich den Fehlercode "parseerror" aus (so geschrieben). Ich erwarte eine Reihe von Daten zurück. Ich benutzte eine AJAX-Anfrage, wenn ich die Daten synchron bekam, und hatte kein Problem, und ich versuchte auch $ .get(). Ich versuchte $ .when, weil ich mehr als 1 AJAX-Anfrage habe, würde ich warten, um zu lösen –

+0

Ich bin im Begriff, einige neuen Code zu posten Ich versuchte –

Antwort

0

Problem war auf meinem serverseitigen Code. Mit .Net Code-Behind, geschalten Response.ContentType von Response.ContentType = "text/xml"; bis Response.ContentType = "text";. Vielen Dank an Dave Methvin für die Erkennung meines JSON-Fehlers. Code oben in beiden Beispielen noch gültig.