2016-12-04 1 views
0

Ich entwickle eine ionic app, wenn ich eine post - anfrage mit angularjs $ http.post zu meinem express js server senden, kann ich nicht die daten in der req.body.req.body ist null in expressjs server beim senden von post anfrage von ionic app

ich meinen Server auf localhost leite: 3000

-Code in meinem Server für CORS

 app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Content-Type"); 
    res.header("Access-Control-Allow-Methods", "GET,PUT,DELETE,POST"); 
    next(); 
    }); 

Mein Winkel Js Post Anfrage

 $http.post('http://localhost:3000/signup',{"username":"x","password":"y"}).success(function(res){ 

    console.log(res); 
    if(res.msg=="success") 
    { 
     //do something 
    } 
} 

Ich bin der Lage, Daten in req zu sehen .body als "Schlüssel" wie:
{'{"username":"x","password":"y"}':''}
Wenn ich den Header von ion setze ic App als:

$http.defaults.headers.post["Content-Type"] = 'application/x-www-form- urlencoded; charset=UTF-8'; 

Bitte lassen Sie mich wissen, wie diese

+1

sind Sie 'Körper mit -Parser? und wenn ja, hast du 'app.use (parser.urlencoded ({extended: true}));'? – georoot

+0

@georoot Ich habe dies in meiner app.js app.use (bodyParser.json()); app.use (bodyParser.urlencoded ({erweitert: false})); Ich habe auch mit app.use (bodyParser.urlencoded ({extended: true})) versucht, aber habe die gleiche Antwort – mBlaze

+0

Sie meinen zu sagen, dass 'req.body' in Ihrem Fall leer ist? Wenn ja, inspizieren Sie die Ajax-Anfrage und senden Sie diese, damit wir sehen können, wie genau die Parameter auf den Server geschrieben werden :) – georoot

Antwort

0

Nun ich, dass herausarbeiten soll ich verwendet habe, um diesen Stackoverflow Link Ionic framework http post request, um meine Daten zu analysieren, bevor sein auf meinen Server senden

$http.defaults.headers.post["Content-Type"] = 'application/x-www-form-urlencoded; charset=UTF-8'; 
    Object.toparams = function ObjecttoParams(obj) 
    { 
    var p = []; 
    for (var key in obj) 
    { 
     p.push(key + '=' + encodeURIComponent(obj[key])); 
    } 
    return p.join('&'); 
    }; 

    $http({ 
    url: 'http://localhost:3000/signup', 
    method: "POST", 
    data: Object.toparams(u) 
    }) 
    .then(function(response) { 
     console.log(response); 
     }, 
     function(response) { // optional 
     // failed 
     }); 
0

debuggen Sie sind in req.body die gesamten Daten als Schlüssel zu bekommen. Dies liegt daran, dass die Winkelanforderung, die Sie ausführen, falsch ist. Hier ist der Teil des Codes, die

$http({ 
    url: 'http://localhost:3000/signup', 
    method: "POST", 
    data: { username : "a" , password : "b" } 
}) 
.then(function(response) { 
     // success 
}, 
function(response) { // optional 
     // failed 
}); 
+0

Danke, aber meine Ajax-Anfrage vom Client wird in diesem Format nach dem Parsen von Formulardaten geparst {"Vorname": "a", "Nachname": "b "," email ":" [email protected] "," password ":" 12345678 "}: und ich erhalte das gleiche im Körper am Express-Server – mBlaze

+0

Also was ich denke ist, ich bin nicht in der Lage, die Formulardaten korrekt zu analysieren von meiner ionischen App. Irgendwelche Vorschläge, was ich tun kann, um es zu ändern – mBlaze

+0

Versuchen Sie, Daten als '{Benutzername:" a ", Kennwort:" b "}' – georoot

Verwandte Themen