2017-10-10 18 views
0
私は緯度とLNGパラメータ送信するために、このコードで角度4でPOSTリクエストを作成しようとしている

:サーバー側でAngular 4で投稿リクエストを作成するには?

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

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

を、私は次のPHPスニペットを持っている:

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); 

サーバーからの応答は残念ながら常に'not ok'です。任意のアイデアをどのようにこれを解決するには? $_POST変数は常に空の配列

+0

任意のJSのエラーが...? – Farkie

+0

いいえ、「not ok」というメッセージが表示されます –

+0

PHP側で 'var_dump(file_get_contents(" php:// input "));を試してみてください。その中にPOSTパラメータがあるかどうかを確認してください。 – mega6382

答えて

0

PHPの大域$_POSTは、application/x-www-form-urlencodedまたはmultipart/form-data-encodedのいずれかのデータのみをラップすることになっています。

しかし、Content-Typeリクエストの場合は他にもあります。あなたが使用する必要があります。

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

詳細情報については、この答えを見て:https://stackoverflow.com/a/8893792/2394254

0

要求構成オブジェクトのデータプロパティは、オブジェクトが含まれている場合はJSON形式にそれをシリアライズ、the documentation

を参照あります。

$ httpProvider.defaults.headers.post:(POSTリクエストのヘッダデフォルト) コンテンツタイプ:アプリケーション/ JSON


角度がコードされていますJSONとしてのデータであり、PHPが自動的に$_POSTに解析するデータフォーマットの1つではありません。

parse JSON as described in this answerが必要です。

関連する問題