2017-01-11 16 views
0

mysqlにデータを挿入したいときにスクリプトに問題があります。 すべてうまくいきますが、$ scopeはpost.configにデータを送信しません。ここで

は、コントローラのコードです:

app.controller("addNewsCtrl", function($scope, $http) { 
    $scope.postData = function($scope) { 
     $http.post("php_libs/add_news.php", { 
      'newstitle':$scope.newstitle, 
      'today':$scope.today, 
      'content':$scope.content 
     }).then(function(response) { 
      console.log(response.statusText); 
     }); 
     }; 
}); 

、テンプレートからコード:

<div> 
    <form> 
    <div class="form-group"> 
     <?php $today = date("d-m-Y"); ?> 
     <label>Tytuł:</label> 
     <input type="text" ng-model="newstitle" placeholder="Wpisz tytuł" class="form-control"> 
    </div> 
    <div class="form-group"> 
     <label>Data:</label> 
     <input type="date" ng-model="today" class="form-control"> 
    </div> 
    <div class="form-group"> 
     <label>Treść: </label> 
     <textarea ng-model="content" placeholder="Wpisz treść posta..." class="form-control"></textarea> 
    </div> 
    <div class="form-group"> 
     <button class="btn btn-primary btn-lg btn-block" ng-click="postData()">Dodaj post</button> 
    </div> 
    </form> 
</div> 

私は "未定義"

を私を与える使用はconsole.log(response.data)だったとき

私のコントローラはこれを見ます:

app.controller("addNewsCtrl", function($scope, $http) { 
    $scope.postData = function() { 
    $http.post("php_libs/add_news.php", { 
     'newstitle': $scope.newstitle, 
     'today': $scope.today, 
     'content': $scope.content 
    }).then(function(response) { 
     console.log(response.data); 
    }); 
    } 
}); 

しかし、console.logはまだ何も返しません。

PHPコード

flag  

<?php include("connect.php"); 
$data = json_decode(file_get_contents("php://input")); 
$title = mysql_real_escape_string($data->title); $date = mysql_real_escape_string($data->post_date); 
$text = mysql_real_escape_string($data->post_text); 
$sql = "INSERT INTO news (title, post_date, post_text) VALUES ('" . $title . "', '" . $date . "', '" . $text . "')"; 
$res = $conn->query($sql); ?> 

データ実際のエラーがPHPのエラーです**クロームのdevのツールhttps://s30.postimg.org/mkcf7dfb5/Bez_tytu_u.png

に送る**

+0

あなたが明示的にそれを渡している場合を除き、ポスト機能に '$のscope'を削除してください - ' $ scope.postData =関数(){..... ' – Developer

+0

ドゥあなたはあなたのファイルにもっと多くのPHPコードを持っていますか? –

+0

これは私がこの作業に使っているすべてのものです。 –

答えて

0

ng-click="postData()"ウォンbecuaseあなたの方法からパラメータ$scopeを削除」スコープを最初の引数として渡します。だから、postDataメソッドのローカルコンテキストで未定義されます:

$scope.postData = function() { 
    $http.post("php_libs/add_news.php", { 
     'newstitle':$scope.newstitle, 
     'today':$scope.today, 
     'content':$scope.content 
    }).then(function(response) { 
     console.log(response.statusText); 
    }); 
}; 
0

postData()機能から$scopeを削除します。

または ng-click="postData(this)"

+0

私はお試しください。それは同じ効果です。 –

+0

$ scopeはまだ定義されていませんか? –

+0

$ scopeに値がありません。コンソールで空行です。 –

0

のようにあなたがコントローラと$の範囲にポスト機能を実装している、あなたのNGクリックで関数にthisキーワードを渡すには、コントローラの利用可能なプロパティとメソッドを持つオブジェクトです。したがって、あなたはあなたの投稿関数内のコントローラのスコープを既に持っており、パラメータとして渡す必要はありません。

コードはこのようにする必要があります。

app.controller("addNewsCtrl", function($scope, $http) { 
    $scope.postData = function() { 
     $http.post("php_libs/add_news.php", { 
      'newstitle':$scope.newstitle, 
      'today':$scope.today, 
      'content':$scope.content 
     }).then(function(response) { 
      console.log(response.statusText); 
     }); 
     }; 
}); 
0

私はこれを解決しました。

すべての問題はでした。mysql_real_escape_string();

これは完璧に動作します

<?php 
    include("connect.php"); 
    $data = json_decode(file_get_contents("php://input")); 

    $title = $data->postTitle; 
    $date = $data->postDate; 
    $content = $data->postContent; 

    $sql = "INSERT INTO news (post_date, post_title, post_content) VALUES ('$date', '$title', '$content')"; 

    $res = $conn->query($sql); 

?> 
関連する問題