当我想将数据插入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错误**
答案 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);
?>