在angularjs中将数据从前端插入到mysql db
Posted
技术标签:
【中文标题】在angularjs中将数据从前端插入到mysql db【英文标题】:Inserting data from front end to mysql db in angularjs 【发布时间】:2013-11-29 00:54:25 【问题描述】:我正在尝试使用 angularjs 将数据从前端插入到 mysql db。 但即使没有错误消息,它也不会插入到数据库中。以下是我使用的代码。
index.html
<html ng-app="demoApp">
<head>
<title> AngularJS Sample</title>
<script src="js/angular.min.js"></script>
<script src="js/angular-route.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
</head>
<body>
<div class="container" ng-view>
</div>
</body>
</html>
script.js
demoApp.config( function ($routeProvider,$locationProvider)
$routeProvider
.when('/',
controller: 'SimpleController',
templateUrl: 'Partials/view1.html'
)
.when('/view2',
controller: 'SimpleController',
templateUrl: 'Partials/view2.html'
)
.otherwise(redirectTo: '/');
);
demoApp.controller('SimpleController',function ($scope,$http)
$http.post('server/view.php').success(function(data)
$scope.friends = data;
);;
$scope.addNewFriend = function(add)
var data =
fname:$scope.newFriend.fname,
lname:$scope.newFriend.lname
$http.post("server/insert.php",data).success(function(data, status, headers, config)
console.log("inserted Successfully");
);
$scope.friends.push(data);
$scope.newFriend =
fname:"",
lname:""
;
;
);
View1.html
<div class="container" style="margin:0px 100px 0px 500px;">
Name:<input type="text" ng-model="filter.name">
<br/>
<ul>
<li ng-repeat="friend in friends | filter:filter.name | orderBy:'fname'">friend.fname friend.lname</li>
</ul>
<br/>
<fieldset style="width:200px;">
<legend>Add Friend</legend>
<form name="addcustomer" method="POST">
First Name:<input type="text" ng-model="newFriend.fname" name="firstname"/>
<br/>
Last Name :<input type="text" ng-model="newFriend.lname" name="lastname"/>
<br/>
<button data-ng-click="addNewFriend()" name="add">Add Friend</button>
</form>
</fieldset>
<a href="#/view2" style="margin:auto;">Next</a>
</div>
下面是我的php文件
插入.php
<?php
if(isset($_POST['add']))
$firsname=$_POST['firstname'];
$laname = $_POST['lastname'];
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("angularjs") or die(mysql_error());
mysql_query("INSERT INTO friends (fname,lname) VALUES ('$firsname', '$laname')");
Print "Your information has been successfully added to the database.";
?>
我知道我在这里做了一些愚蠢的事情。我今天刚开始学习angularjs。 当我尝试使用纯 html 插入 db 的 php 代码时,它工作得很好。我没有得到我在这里做错了什么。希望有人在这里帮助我
【问题讨论】:
如果 php 在没有角度的情况下工作,那么我们可以将其视为原因,但您应该使用 mysqli_* 或 PDO 而不是 mysql_* 函数。使用 Chrome 开发者工具或类似工具,你能看到 XHR 对你的脚本进行 POST 吗?它是否具有“添加”的价值?我看不到您在哪里设置帖子“添加”值,但我不熟悉 angular。更多关于为什么不使用 mysql_* 的信息可以找到here 您是否收到回调或至少一些请求代码的响应代码? 显然您没有发送 _POST["add"] 值,因此没有输入 if。 但是相同的代码在常规 php 中运行良好...@boodle 我没有收到回复...如果我是对的,我应该得到“您的信息已成功添加到数据库中。”作为回应。但是当使用 angularjs 完成时没有得到它。但我得到了常规 php @VinodLouis 的响应 【参考方案1】:您插入数据的脚本有误。将其替换为以下内容
$http.post("server/insert.php",'fstname': $scope.newFriend.fname, 'lstname': $scope.newFriend.lname)
.success(function(data, status, headers, config)
console.log("inserted Successfully");
);
并如下更改php。
$data = json_decode(file_get_contents("php://input"));
$fstname = mysql_real_escape_string($data->fstname);
$lstname = mysql_real_escape_string($data->lstname);
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("angularjs") or die(mysql_error());
mysql_query("INSERT INTO friends (fname,lname) VALUES ('$fstname', '$lstname')");
Print "Your information has been successfully added to the database.";
当我尝试使用您的代码时,这对我有用。
【讨论】:
以上是关于在angularjs中将数据从前端插入到mysql db的主要内容,如果未能解决你的问题,请参考以下文章
如何在netbeans java中将图像插入mysql数据库
试图在php MYSQL中将数据从一个表插入另一个表[关闭]
在 jsp/servlet 中将调查数据插入 mySql 数据库
如何使用 PostgreSQL 将数据从 AngularJS 前端传递到 Nodejs 后端?