$ scope不适用于$ http.post

时间:2017-01-11 11:38:33

标签: php angularjs

当我想将数据插入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)时,它给了我“undefined”

现在我的控制器看起来:

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

使用chrome dev工具https://s30.postimg.org/mkcf7dfb5/Bez_tytu_u.png

发送数据

**实际错误是php错误**

4 个答案:

答案 0 :(得分:0)

从您的方法中删除参数$scope,因为ng-click="postData()"不会将范围作为第一个参数传递。因此,它将在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);
    });
};

答案 1 :(得分:0)

$scope功能中删除postData()

或将this关键字传递给ng-click中的函数,例如 ng-click="postData(this)"

答案 2 :(得分:0)

您已在Controller中实现Post函数,$ scope是具有控制器的可用属性和方法的对象。因此,您已经在post函数中拥有了控制器的范围,并且您不需要将其作为参数传递。

您的代码需要像这样。

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

答案 3 :(得分: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);

?>