2016-07-26 10 views
4

CodeigniterにAngular $ post経由でデータを送信しているときに問題があります。私はこのコードをJS使用しています:

$scope.user.first_name = 'first name'; 
$scope.user.last_name = 'last name'; 

$http({ 
     method: 'POST', 
     url: '/registration', 
     data: {user: $.param($scope.user)}, 
     headers: { 
     'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' 
     } 
}).then(function successCallback(response) { 
       console.log(response) 
     }, function errorCallback(response) { 
       console.log(response); 
}); 

を私のPHPはStackOverflowのから別の答えから基づいていますが、まだ動作しません:

echo file_get_contents('php://input'); 
var_dump($this->input->post()); 

が、このように私は応答空の配列を参照してください、場合同じ、私は応答NULLを参照してください

var_dump($this->input->post('user')); 

されて:私は言う

var_dump(json_encode($this->input->post())); 

キー "ユーザー"の有無にかかわらず。私が使用しても:

var_dump($_POST); 

私は空の配列を取得します。

$ post経由でデータを取得して取得する方法Codeigniterで角度サービスを利用するには?あなたは、フォームエンコードされたデータとして送信する場合は

答えて

2

あなたは$.param()

変更して、全体のデータオブジェクトをシリアル化する必要があります。

data: {user: $.param($scope.user)}, 

data: $.param(angular.copy({user: $scope.user})), 

または使用$httpParamSerializerJQLike

デフォルト値のを使用するとはただそれでも応答がデータNULLを持つオブジェクトです

$http.post('/registration',$scope.user).then(... 

とPHP

$data = json_decode(file_get_contents('php://input')); 
+0

だろう。 – gdfgdfg

+0

どのコードを使用していますか? – charlietfl

+0

あなたのコードでは、デフォルトではありません。そして、このPHPの '$ data = json_decode(file_get_contents( 'php:// input')); var_dump(json_encode($ data));' - 文字列NULLを返し、 'json_encode'を指定しないとNULLになります。私は開発ツールで、リクエストがブラウザ経由で送信されることがわかります。 – gdfgdfg