2017-11-09 2 views
1

Ich möchte eine GET-Anforderung an eine bestimmte URL durch meine Winkel Frontend zum Express.js Backend machen, jetzt in meinem Frontend, wenn ich tun: -

<li> 
     <a ng-click="givequiz()">GiveQuiz</a> 
</li> 

und mein Winkel-Code ist: -

$scope.givequiz=function(){ 
    console.log("give quiz"); 
    $http.get('/home/givequiz').then(function(res){ 
     //request is going fine and all 
}); 
} 

die obige Sache funktioniert, aber ich bin die Antwort als ein Objekt bekommen, die gesamte Datei und uRL nicht und alle ändern.

Aber wenn ich tun, um die get Sache Form: -

<li> 
     <form action="http://localhost:8000/home/givequiz" method="GET"> 
      <button type="submit">Give Quiz</button> 
     </form> 
</li> 

diese me "http://localhost:8000/home/givequiz" aber die $ http.get nicht, warum ist das so genannte zu einer neuen URL nimmt? Sind nicht beide Methoden gleich? Und so behandle ich beide Anfragen.

router.get('/givequiz', function(req, res, next) { 
    console.log("in getquiz"); 
//always gets printed^means all reqs come here 
    res.sendFile('/givequiz.html',{ root: client }); 
}); 
     Any help will be much appreciated.  
+0

Im ersten Fall sollten Sie die Route manuell ändern. –

Antwort

1

Es klingt wie Ihr Code funktioniert gut. Angular macht eine AJAX-Anfrage hinter die Kulissen. Wenn Sie Route ändern möchten, wenn die Antwort wieder erfolgreich kommt, sollten Sie tun:

$http.get('/home/givequiz').then(function(res){ 
    // request is going fine and all 
    $state.go(nameOfState) 
}); 

Sie alternativ window.location in dem dann lösen Block einstellen könnte, aber das wird prob eine Aktualisierung der Seite verursachen während state.go nicht sollte.

+0

Warum bekommt das Formular die Szene umgeleitet zum "Givequiz" und Ajax bekommt nur diese Seite als Antwort? – Asim

+0

Zuvor in der Web-Welt mussten Sie die Seite neu laden, um eine Anfrage zu stellen. In der neuen Welt können Sie hinter den Kulissen eine Anfrage stellen. Dies wird als AJAX-Anfrage bezeichnet. Dies ist der Fall, wenn Sie die Seite nicht neu laden möchten, sondern nur weitere Informationen vom Server erhalten möchten. Angular macht eine AJAX-Anfrage nach Informationen. Wenn der Code aufgelöst wird, teilt er ihm mit, was als nächstes zu tun ist. Da Angular den Status ändern kann, ohne die Seite zu aktualisieren, ist dies in der Angular-Welt nützlich. – danday74

+0

Wie genau kann ich dann eine Ajax-Anfrage senden und die neue Seite bekommen, anstatt sie als Antwort zu bekommen? – Asim