我使用相同的form
来创建和更新数据库中的用户。我可以正确更新,但是当我创建一个用户时,提交两次发送并在数据库中创建两个相同的用户。
我在RouteProvider
中有这个。
.config(function($routeProvider) {
$routeProvider
.when("/users", {
controller: "MainControlador",
templateUrl: "templates/users.html"
})
.when("/user/:id", {
controller: "UserControlador",
templateUrl: "templates/user.html"
})
.when("/users/edit/:id", {
controller: "UserControlador",
templateUrl: "templates/form.html"
})
.when("/users/new", {
controller: "NewUserControlador",
templateUrl: "templates/form.html"
})
.when("/", {
templateUrl: "templates/main.html"
})
.otherwise("/");
})
这是我的form
<div>
<form ng-submit="saveUser()">
<input ng-model="user.name" type="text" required>
<input ng-model="user.surname" type="text" required>
<input ng-model="user.phone" type="text"required>
<input ng-model="user.email"type="text" required>
<input type="submit">
</form>
</div>
最后我使用了这个controller
//Controller Update
.controller("UserControlador", function($scope, $routeParams, UserAPI) {
$scope.title = "Edit user";
UserAPI.getOne($routeParams.id).success(function(data) {
//Get Array First Element
$scope.user = data[0];
})
$scope.saveUser = function() {
var data = ({
id: $routeParams.id,
name: $scope.user.name,
surname: $scope.user.surname,
phone: $scope.user.phone,
email: $scope.user.email
});
UserAPI.update(data).success(function(data) {
$scope.user = data;
})
}
})
//Controller Create
.controller("NewUserControlador", function($scope, UserAPI) {
$scope.title = "Add user";
$scope.saveUser = function() {
var data = ({
name: $scope.user.name,
surname: $scope.user.surname,
phone: $scope.user.phone,
email: $scope.user.email,
});
UserAPI.create(data).success(function(data) {
console.log(data);
$scope.user = data;
})
}
})
¿知道这里发生了什么?我试图使用console.log但显然一切正常。我试图使用过于角度的batarang调试角度调用,但不起作用。
答案 0 :(得分:1)
一个非常愚蠢的错误。在我的PHP代码中,我有这个......
<?php
$conexion = new PDO("mysql:host=localhost;dbname=httpcrud;charset=utf8", "root", "");
$userName = $_GET['userName'];
$userSurname = $_GET['userSurname'];
$userPhone = $_GET['userPhone'];
$userEmail = $_GET['userEmail'];
$sql=$conexion->query("INSERT INTO users (name,surname,phone,email) VALUES('$userName','$userSurname','$userPhone','$userEmail')");
$json = json_encode($sql->execute());
echo $json;
?>
当我使用insert
和$sql->execute()
时,提交重复query()
。我将$json= json_encode($sql->execute());
删除为$json = json_encode($sql)
,最后一切都完美无缺。
答案 1 :(得分:0)
您已声明了两个控制器,一个用于保存用户( NewUserControlador ),另一个用于更新(UserControlador)。这两种方法都称为saveUser(),它们在$ scope上声明。
由于名称相同,可能会发生冲突。 为什么不为这些操作使用一个控制器?毕竟,它们都是同一个实体(用户)的CRUD操作。
如果您仍想使用两个不同的控制器,您可以使用一些日志记录来查找正在发生的事情,或者更好的想法是在UserControlador中重命名更新方法。
有关范围的更多信息,请访问here