2016-10-25 4 views
0

Von einem Winkel App, wenn ich eine Post-Anforderung mit jQuery wie folgt senden, ...

this.login = function (email, password) { 
    return $.getJSON(FOO_URL, { 
     email: email, 
     password: password 
    }); 
} 

... meine Antwort ist völlig in Ordnung.

Object {result: "ok", key_one: result_one, key_two: result_two, ...} 

aber wenn ich versuche, $http Winkel der mit der gleichen Sache zu tun, wie folgt, ...

this.login = function (email, password) { 
    return $http.post(FOO_URL, { 
     email: email, 
     password: password 
    }); 
} 

... meine Antwortdaten ist völlig leer.

Object {data: "", status: 200, config: Object, statusText: "OK"} 

Warum ist die Antwortdaten leer mit Winkel $http?

+0

'$ .getJSON' wird ** nicht ** eine' POST' Anfrage stellen. Es kann nur "GET" – Phil

+0

interessant machen ... aber $ http.get funktioniert auch nicht. – Grateful

Antwort

0

jQuery $.getJSON wird nicht eine POST Anfrage. Es kann nur GET tun.

Um es genau das gleiche, werden Sie als application/x-www-form-urlencoded formatiert übergeben möchten die Daten als params ...

$http.get(FOO_URL, { 
    params: { 
     email: email, 
     password: password 
    } 
}) 

Siehe https://docs.angularjs.org/api/ng/service/$http#usage


Um eine POST-Anforderung mit Daten zu senden was, wenn Sie PHP $_REQUEST (oder $_POST) verwenden, müssen Sie tun, finden Sie in dieser Antwort ~ https://stackoverflow.com/a/30970229/283366

Kurze Antwort, injizieren $http und $httpParamSerializer und verwenden

$http({ 
    method: 'POST', 
    url: FOO_URL, 
    data: $httpParamSerializer({email: email, password: password}), 
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
}) 
+0

Leider erhält $ http.get die gleiche Antwort. Es funktioniert also immer noch nicht. – Grateful

+0

@Graeful hast du das 'params' Objekt wie in meiner Antwort eingestellt? – Phil

+0

oops ... lass mich das geben – Grateful

0

Das sind zwei verschiedene HTTP-Anfragen. Einer ist getJSON ist eine GET-Methode und $ http.post ist eine POST-Methode.

this.login = function (email, password) { 
    return $http.get(FOO_URL, { 
     params: { 
      email: email, 
      password: password 
     } 
    }); 
} 
+0

Vielen Dank für diese Information. Leider funktioniert $ http.get auch nicht ... da es mir genau die gleiche Antwort gibt. – Grateful