2016-03-27 21 views
1

私のサーバーで作業していて、解決策が見つかりません。あなたが私を助けることを願っています。Angular do POST to PHP

私はPOSTリクエストを送信したい場所からのサービスを持っています。サービスは次のようになります。(私は別のサイトからこれを呼び出す必要があるため、私は、サービスを利用したい)

angular.module('schwimmfestivalApp') 
    .service('groupService', function($http) { 
     // AngularJS will instantiate a singleton by calling "new" on this function 
     var url = '../../../server/func/getGroups.php'; 
     var createGroupUrl = '../../../server/func/setGroup.php'; 
     var groupCategoryUrl = '../../../server/func/getGroupCategory.php'; 


     this.getGroups = function() { 
      return $http.get(url, {cache: false}).then(response => { 
       console.log('Groups: ' + JSON.stringify(response.data)); 
       return response.data; 
      }); 
     }; 

     this.createGroup = function(group) { 
      return $http.post(createGroupUrl, {'group': group}, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}}).then(response => { 
       console.log('Group to Create: ' + group); 
       console.log('Resonse: ' + JSON.stringify(response)); 
       console.log('Create Group: ' + response.data); 
       return response.data; 
      }); 
     }; 

    }); 

getGroups()メソッドが正常に動作しています。

setgroupsをのための私のサーバー・コードは(私が書かれていない)()メソッドは次のようになります。

<?php 

require_once '../connect/connect_db.inc'; 
require_once '../class/gruppe.php'; 
require_once '../func/getHeader.php'; 

$db = getConnection(); 
getHeader('json'); 

if(isset($_POST['group'])){ 

    $idGruppe = 0; 
    //$gruppeJson = json_decode(file_get_contents("php://input")); 
    $gruppeJson = json_decode($_POST['group']); 

    $sql = "INSERT INTO gruppe "; 
    $sql .="(name, gruppe_typ_id) VALUES ('"; 
    $sql .= $gruppeJson->{'name'} . "', '"; 
    $sql .= $gruppeJson->{'idKategorie'}; 
    $sql .=" ')"; 

    if ($db -> query($sql)) { 
     $idGruppe = $db -> insert_id ; 

     $selectGroup = "SELECT gruppe.id, gruppe.name, gruppe.gruppe_typ_id AS idKategorie, gruppe_typ.name AS kategorie "; 
     $selectGroup .= "FROM gruppe, gruppe_typ "; 
     $selectGroup .= "WHERE gruppe.gruppe_typ_id = gruppe_typ.id AND gruppe.id = " . $idGruppe; 
     if ($result = $db -> query($selectGroup)) { 
      while($row = $result->fetch_assoc()) { 
       $gruppe = new gruppe(); 
       $gruppe->id = $row['id']; 
       $gruppe->name = $row['name']; 
       $gruppe->idKategorie = $row['idKategorie']; 
       $gruppe->kategorieName = $row['kategorie']; 
      } 

      echo json_encode($gruppe); 
     } else { 
      echo $db->error; 
      echo "</br> " . $selectGroup; 
     } 
    } else{ 

    } 
} 

私はあなたがのfile_get_contentsでデータを読み込む必要がについて何かを読んだことがあります。しかし、私はそこには行きません。 if(isset($_POST['group']))は真であると検証されません。

だから、どうすればこの問題に取り組もうとしているのですか? 私に何か提案がありますか? file_get_contents("php://input"):事前 ドミニク

+0

表示 'のvar_dump($ _ POST)を'見つけ、あなたが角度からのポストを呼び出すときに放火犯で応答をチェックします。 – lukassz

+0

私が今言ったように、私はいつも空の配列またはJSONを得て、私が設定したヘッダに頼っています。 – dominic

答えて

1

おかげで次を使用して投稿されたものは何でもデータを取得できるようになります。これにより、キー/値オブジェクトを取得するためにjson_decodeを呼び出すことができるjson文字列が返されます。

$_POSTを使用する場合は、$http.postにデータを渡す前に、データに$.paramと電話する必要があります。これによりデータがシリアライズされ、PHPは$_POSTのキーと値のペアを作成します。

+0

私はvar_dump(file_get_contents( "php:// input")もしようとしましたが、それも空であるようですが、サービスに$を注入する必要がありますか? – dominic

+0

'$ .param'は' jQuery.param 'あなたがしなければならないことは、あなたのページにjQueryライブラリを含めることです。 – maddockst

0

あなたのヒントのおかげで。

ここでは、標準的な角度の角度データをサーバーに送信しました。

サーバー側では$gruppeJson = json_decode(file_get_contents("php://input"));を解析し、JSONに解析します。

あなたのPHPファイルに良い説明ここangularJs POST data in $_POST for php