2016-04-24 6 views
0

Ich sende POST Anfrage mit eckigen mit übermittelten Formular. Ich habe optionale Eingabefelder und wenn ich etwas dort eintippe und lösche es dann in meiner Anfrage habe ich dieses Feld mit "". Soll das so sein?Anfrage mit Winkel senden - leere Elemente in Anfrage

Das ist, wie meine Form aussehen:

<label class="col-md-2 col-xs-2 my-label" for="contactFirstName">Imię</label> 
     <div class="col-md-3 col-xs-3"> 
     <input type="text" class="form-control" id="contactFirstName" name="contactFirstName" 
       placeholder="Imię" 
       ng-model="loan.newLoan.contactPerson.firstName" > 
     </div> 

Und das ist, wie ich die Anfrage bin das Senden:

function create() { 
return RequestFactory.save({id1:'loans', id2:'create'},vm.newLoan, 
    function() { 
     MessageFactory.setSuccess({show:true, msg:'success'}); 
     $state.reload('loan.new'); 
    }, function(response){ 
     vm.isError = true; 
     ErrorFactory.errorHandler(vm.errorMessages, response); 
    }); 
} 

Und wenn in meiner Anfrage json mit diesem Bereich sieht wie folgt aus Senden:

{"firstName":""} 

Ist das in Ordnung? Oder sollte dieses Feld nicht in der Anfrage enthalten sein, wenn es leer ist? Was soll ich damit machen?

+0

Hallo! Bitte akzeptiere meine Antwort, wenn sie dein Problem löst. :) [Wie funktioniert die Annahme einer Antwort?] (Http://meta.stackexchange.com/a/5235/170863) –

+0

Ja, es hat es gelöst, danke. – luk1

Antwort

1

Ist das in Ordnung?

Ja oder nicht, hängt davon ab, was Ihr Back-End-Dienst erwartet.

Sie können die leeren Felder in Angular entfernen, indem Sie so etwas wie

function create() { 
    var data = {}; 

    if (vm.newLoan.contactPerson.firstName) { 
     data.firstName = vm.newLoan.contactPerson.firstName; 
    } 

    RequestFactory.save({ id1: 'loans', id2: 'create' }, data, ...); 
} 

tun, und Sie sollten eine Zusatzprüfung in Ihrem Backend-Service tun, um die leeren Felder zu entfernen, wenn Sie es nicht speichern möchten. Vertrauen Sie niemals den Daten, die von einem Client gesendet werden, selbst wenn Sie die Daten in JavaScript validieren. Führen Sie immer einen zusätzlichen Check im Servercode durch.

1

Daher ist Ihr HTML-Eingabefeld nicht erforderlich, es ist völlig in Ordnung.Hoffen Sie Ihren unterstützten Dienst auch ein optionales Feld.Wenn es ein Pflichtfeld ist, müssen Sie überprüfen, wie unten gezeigt, wenn Sie die Save Taste drücken.

Dies ist nur ein Beispiel:

Html

<button type="submit" class="btn btn-primary blue" ng- 
click="vm.save(yourFormName.$valid)"> Save</button> 

JS

//to save 
    vm.save = function (isValid) { 
     if (isValid) { 
      //fires save method here 
     } 
    };