Ich versuche, eine POST-Anfrage von meinem Ionic Project in Winkel zu meinem Laraval Dingo API zu machen. Wenn ich die POST-Anforderung in POSTMAN erstelle, erstellt es erfolgreich einen neuen Datensatz, aber wenn ich es in Angularjs mache, gibt es die Antwort für die GET-Anforderung zurück.Beitrag an Laraval API gibt meine GET-Anfrage zurück
Dies ist das die Antwort POSTMAN schlägt vor, für den Code für JQuery:
var settings = {
"async": true,
"crossDomain": true,
"url": "http://app.extremenazarene.org/api/contacts",
"method": "POST",
"headers": {
"authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2FwcC5leHRyZW1lbmF6YXJlbmUub3JnXC9hcGlcL2xvZ2luIiwiaWF0IjoxNDY0NjM1NDQwLCJleHAiOjE0NjQ2MzkwNDAsIm5iZiI6MTQ2NDYzNTQ0MCwianRpIjoiYmZjMTc3YzdhODk5OGE1Y2Q1NWRiYjIzOTU4YzQ5YzMifQ.fdiGmKy9ipPnvdLuapFFe8Rz6nD7ty-gkzfWq8ySO_U",
"cache-control": "no-cache",
"postman-token": "c022a35b-bbdd-2f77-f7b9-2802340dd0bb",
"content-type": "application/x-www-form-urlencoded"
},
"data": {
"fname": "sarkinda"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Meine AngularJS Anfrage ist
storeContact: function(token, data) {
var deferred = $q.defer();
var promise = deferred.promise;
var settings = {
method: "POST",
url: "/api/api/contacts/",
headers: {
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' +token
},
data: data
};
console.log(settings);
$http(settings).then(function mySuccess(response) {
deferred.resolve(response.data);
}, function myError(response){
deferred.reject(response.statusText);
});
promise.success = function(fn) {
promise.then(fn);
return promise;
};
promise.error = function(fn) {
promise.then(null, fn);
return promise;
};
return promise;
},
Der AngularJS Code eine Erfolgsantwort und gibt Daten aus der gleichen URL liefert für eine GET Anfrage. Ich glaube, dass mein Laraval-Code richtig ist, weil POSTMAN den Anruf erfolgreich ausführen und einen neuen Datensatz erstellen kann. Mit meinem angularJS-Code muss etwas nicht stimmen.
Hinweis Ich habe auch versucht, Daten über Winkel js formated wie das Senden:
data: {'fname':'testname'}
Versuchen Sie den Inhaltstyp in 'application/json' zu ändern und versuchen Sie es erneut –
@Justin Bitte beachten Sie, dass angularjs ajax Anfrage auf eine seltsame Weise verarbeiten. Tatsächlich wurden alle POST-Daten in den Hauptteil der Anfrage eingefügt. Können Sie versuchen, den Inhalt des Hauptteils der Anfrage zum Beispiel wie folgt abzulegen: öffentliche Funktion foo (Anfrage $ Anfrage) { var_dump ($ Anfrage-> getContent()); sterben; } – erwan
Ich stimme @erwan zu - In meinen eckigen Projekten verwende ich '$ data = file_get_contents ('php: // input');' um an die Daten zu kommen, anstatt '$ _POST' zu verwenden. – swatkins