2017-10-10 3 views
0

Je suis en train de faire une demande de poste avec angulaire 4 avec ce code pour envoyer lat et paramètres lng:Comment faire une demande de publication avec Angular 4?

let data = {lat: this.newLat, lng: this.newLng}; 

this.http.post(url, data) 
    .map(response => response.json()) 
    .subscribe(getResponse => console.log(getResponse)); 

Du côté du serveur, je l'extrait de code php suivant:

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Headers: Content-Type"); 

if (isset($_POST['lat'], $_POST['lng'])) { 
    $response['msg'] = 'ok'; 
} else { 
    $response['msg'] = 'not ok'; 
} 
echo json_encode($response); 

La réponse du serveur est malheureusement toujours 'not ok'. Des idées pour résoudre ceci? La variable $_POST est toujours un tableau vide

+0

Toute erreur JS ...? – Farkie

+0

Non, je reçois le message "pas ok" –

+0

Essayez 'var_dump (file_get_contents (" php: // input "));' du côté de PHP. Voyez si vous obtenez des paramètres POST dans cela. – mega6382

Répondre

0

Le PHP superglobal $_POST, seulement est censé pour envelopper les données qui est soit, application/x-www-form-urlencoded ou multipart/form-data-encoded.

Mais si le Content-Type pour la demande est autre chose. Vous devez utiliser:

$post = file_get_contents('php://input'); 

Pour plus d'informations regarder cette réponse: https://stackoverflow.com/a/8893792/2394254

0

Voir the documentation

Si la propriété de données de l'objet de configuration de requête contient un objet, sérialiser au format JSON.

et

$ httpProvider.defaults.headers.post: (par défaut d'en-tête pour les requêtes POST) Content-Type: application/JSON


angulaire est codant pour la données comme JSON, et pas un des formats de données que PHP analysera automatiquement dans $_POST. Vous devez parse JSON as described in this answer.