Ich habe eine AngularJS 1.5-App mit einem Formular, das Daten an eine Datenbank sendet. Im Formular gibt es eine Dropdown-Auswahl. Das Problem ist, einige Optionen in der Dropdown-POST erfolgreich, während andere einen POST Fehler auftreten sagtPOST-Fehler 500 (Interner Serverfehler) - JSON-Syntaxfehler
POST http://localhost/myURL 500 (Internal Server Error)
und darunter ...
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at Object.qc [as fromJson] (angular.js:1285)
at apiError (postFormCtrl.js:957)
at AjaxServices.js:37
at angular.js:11029
at angular.js:15616
at m.$eval (angular.js:16884)
at m.$digest (angular.js:16700)
at m.$apply (angular.js:16992)
at g (angular.js:11313)
Was einige Elemente aus der gleichen Form verursachen könnte zu POST erfolgreich und andere diesen Fehler zu begegnen? Ich habe den Code auf fehlende Kommas, Klammern usw. überprüft.
ich die Ausgabe auf Browsern geprüft haben, haben die Response-Header für eine erfolgreiche Beiträge
Content-Type:application/json
in den Antwort-Header während fehlgeschlagen POSTs
Content-Type:text/html
in den Antwort-Header haben. Könnte das das Problem sein?
Und wenn es ist, wie verhindere ich es, weil ich keine einzige Einstellung in der Anwendung habe, die den Inhaltstyp als Text/HTML einstellt.
Zusätzlich weiß ich, dass das Problem nicht in der Ajax-Post-Funktion sein kann, da die gesamte Anwendung die gleiche Ajax-Post-Funktion verwendet und sie gut funktionieren.
MEHR INFO
Dies ist ein Beispiel für ein Element in der Dropdown auswählen:
<div class="row" ng-if="isStudentActivity">
<div class="col-sm-10">
<label for="activity">Select an activity:</label>
<div>
<ui-select ng-model="theactivity.selected" theme="select2" class="form-control" name="activity" required>
<ui-select-match placeholder="Select or search an activity...">
<span>{{$select.selected.activity}}</span>
</ui-select-match>
<ui-select-choices repeat="item in activities | filter: $select.search">
<span ng-bind-html="item.activity | highlight: $select.search"></span>
</ui-select-choices>
</ui-select>
<p ng-show="dataFilterForm.activity.$invalid && (!dataFilterForm.activity.$pristine || dataFilterForm.$submitted)" class="help-block"><i class="fa fa-exclamation-triangle"></i> You must choose an activity.</p>
</div>
</div>
</div>
Und dies ist die Ajax-Funktion von allen Stellen in der Anwendung verwendet
this.AjaxPost2 = function (data, route, successFunction, errorFunction, extras)
{
$http({
method: 'POST',
url: route,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: data
}).success(function (response, status, headers, config) {
successFunction(response, status, extras);
}).error(function (response) {
errorFunction(response);
});
}
Und die Funktion wird mit
aufgerufenthis.addCommunication = function (request, successFunction, errorFunction, params) {
ajaxService.AjaxPost2(request, path + "/addCommunication", successFunction, errorFunction, params);
};
Was posten Sie? JSON-Objekt, String, noch etwas? – chrisv
Sie sollten etwas Code zeigen, sonst können wir nur raten. –
Sie haben einen Fehler in Ihrem Backend (PHP?) Überprüfen Sie, wie Sie Ihre Daten verarbeiten –