以下 $http request
は正常に実行されますが、反対側のPHPスクリプトは空の$_POST
配列は「test」と「testval」を受け取る必要があります。何か案は?
$http({
url: 'backend.php',
method: "POST",
data: {'test': 'testval'},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data, status, headers, config) {
console.log(data);
}).error(function (data, status, headers, config) {});
その単純なデータだけを送信したい場合は、次のことを試してください。
$http({
url: 'backend.php',
method: "POST",
data: 'test=' + testval,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data, status, headers, config) {
console.log(data);
}).error(function (data, status, headers, config) {});
そして、phpの部分は次のようになります:
<?php
$data = $_POST['test'];
$echo $data;
?>
それは私のために働いています。
より単純化された方法:
myApp.config(function($httpProvider) {
$httpProvider.defaults.transformRequest = function(data) {
if (data === undefined) { return data; }
return $.param(data);
};
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
});
次の行と前のコンマを削除します。
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
そして、データは$ _POSTに表示されます。ファイルをアップロードする場合にのみその行が必要です。その場合、データ変数を取得するために本文をデコードする必要があります。
私はここで私の解決策を見つけました http://www.peterbe.com/plog/what-stumped-me-about-angularjs 。 「AJAXはjQueryのように機能しません」セクションにコードがあり、これで問題が解決しました。