2016-07-24 4 views
0

Dieser Code erstellt eine Endlosschleife:

$scope.signup = function() { 
    $http({ 
    method: 'POST', 
    data: $.param($scope.formData), 
    url: '/api/signup', 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }) 
    .success(function(data) { 
    console.log(data); 
    }) 
} 

HTML-Formular:

<div data-ng-controller="signup"> 
    <form id="signup-form" name="singup-form" method="post" data-ng-submit="signup()" novalidate> 
    <div class="form-group"> 
     <label>Email</label> 
     <input class="form-control" type="email" name="email" placeholder="Your email" data-ng-model="formData.email"> 
    </div> 
    <div class="form-group p-tb-20"> 
     <button type="submit" class="btn btn-success">Signup</button> 
    </div> 
    </form> 
</div> 

Das Problem entsteht, wenn ich $.param($scope.formData) nennen. Wenn ich das Objekt $scope.formData inspiziere, bemerkte ich, dass es zirkuläre Referenzen auf sich selbst enthält und die Modelle innerhalb des formData-Objekts Referenzen auf die Objekte innerhalb des Controllers und wiederum selbst enthalten. Die Funktion läuft also in einer Endlosschleife.

Alles was ich versuche ist ein Formular zu senden. Was mache ich falsch?

+0

Sie sollten Daten in Anfrage Körper direkt wie 'Daten: $ scope.formData,', warum Sie $ .Params dort? –

+0

Weil ich möchte, dass die Daten als POST-Anfrage gesendet werden und nicht innerhalb des Hauptteils der Anfrage. – Lev

+0

also dann 'params' trotz' data' Option verwenden .. Technisch sollte es vom Anfragetext übergeben werden. –

Antwort

0

Die erste Zeile in Ihrer Ansicht sollte der Name des Controllers sein, den Sie hier direkt aufrufen.

<div data-ng-controller=**"signup()"**> 
+0

zu kopieren Es war ein Tippfehler, Entschuldigung! – Lev

Verwandte Themen