首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

angularjs连接数据库查找删除操作

2023-11-11 来源:花图问答

<!DOCTYPE html><html><head> <meta charset="utf-8"> </head>

<body> <div ng-app="myApp" ng-controller="myctrl"> <table width=‘100%‘ border="1" cellspacing="0"> <tr> <th>姓名</th> <th>性别</th> <th>年龄</th> <th>操作</th> </tr> <tr ng-repeat="x in list"> <td ng-bind=" x.username"></td> <td ng-bind=" x.userage"></td> <td ng-bind=" x.usersex"></td> <td><input type="button" value="删除" uid={{x.userid}} ng-click="del($event)"><input type="button" value="修改" uid={{x.userid}}></td>  //uid是自己定的属性 并赋值    del(传自己为对象进去) 相当于js 的this </tr> </table> </div> </body> <script src="js/angular.min.js" charset="utf-8"></script> <script type="text/javascript"> var app=angular.module(‘myApp‘,[]); app.controller(‘myctrl‘,function($scope,$http){ $http({ method:‘GET‘, url:"php/angu_test_sel.php" }).then(function successCallback(response){ $scope.list=response.data.msg; },function errorCallback(response){ alert("数据请求失败"); });

$scope.del=function(event){ var id=event.target.getAttribute("uid");//获取当前对象的uid值

$http({ method:‘GET‘, params :{ id : id},//第一个id是后台php接受的参数名称  第二个id是本页面获取的删除的id值 url:"php/angu_test_del.php" }).then(function successCallback(response){ window.location.reload(); },function errorCallback(response){ alert("删除失败"); }); } }) </script>

 

 

<?phpheader(‘Content-Type: text/html; charset=utf8‘); $conn=mysql_connect("localhost","root","root"); mysql_query("use txt"); if($conn){ if($_GET){ $uid=$_GET["id"]; $sql="delete from test1 where userid=$uid"; $res=mysql_query($sql); if($res>0){ echo ‘{"status":"1"}‘; }else{ echo ‘{"status":"0"}‘; } } }else{ echo ‘{"status":"-2"}‘; } ?>

 

<?phpheader(‘Content-Type: text/html; charset=utf8‘); $conn=mysql_connect("localhost","root","root"); mysql_query("use txt"); if($conn){ $sql="select * from test1"; $res=mysql_query($sql); if(mysql_num_rows($res)>0){ while($row=mysql_fetch_assoc($res)){ $arr[]= $row; } echo ‘{"status":"1","msg":‘.json_encode($arr).‘}‘; } }else{ echo ‘{"status":"-2";"msg":"fail to connect"}‘; } ?>

 

angularjs连接数据库查找删除操作

标签:oct   back   sel   fetch   div   roo   getattr   第一个   query   

小编还为您整理了以下内容,可能对您也有帮助:

angularjs是一个前端框架,为什么要有sql语句操作数据库那?

一、angularjs是一个javascript框架。通过script脚本引入,他是一个用Javascript编写的库。angularjs通过指令扩展了HTML,通过表达式绑定数据到HTML中。AngularJS主要考虑的是构建CRUD(增删改查)应用。

优点:

1. 模板功能强大丰富,并且是声明式的,自带了丰富的Angular指令;

2. 是一个比较完善的前端MVC框架,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能;

3. 自定义Directive(指令),比jQuery插件还灵活,但是需要深入了解Directive的一些特性,简单的封装容易,复杂一点官方没有提供详细的介绍文档,可以通过阅读源代码来找到某些我们需要的东西,如:在directive使用 $parse;

4. ng模块化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助。

缺点:

1. 验证功能错误信息显示比较薄弱,需要写很多模板标签,没有jQuery Validate方便,所以可以自己封装了验证的错误信息提示;

2. ngView只能有一个,不能嵌套多个视图,虽然有angular-ui/ui-router · GitHub 解决,但是貌似ui-router 对于URL的控制不是很灵活,必须是嵌套式的;

3. 对于特别复杂的应用场景,貌似性能有点问题,特别是在Windows下使用chrome浏览器,不知道是内存泄漏了还是什么其他问题,没有找到好的解决方案,奇怪的是在IE10下反而很快;

4. 这次从1.0.X升级到1.2.X,貌似有比较大的调整,没有完美兼容低版本,升级之后可能会导致一个兼容性的BUG,具体详细信息参考官方文档AngularJS ,对应的中文版本:Angular 1.0到1.2 迁移指南

5. ng提倡在控制器里面不要有操作DOM的代码,对于一些jQuery 插件的使用,如果想不破坏代码的整洁性,需要写一些directive去封装插件,但是现在有很多插件的版本已经支持Angular了,如:jQuery File Upload Demo

6. Angular 太笨重了,没有让用户选择一个轻量级的版本,当然1.2.X后,Angular也在做一些更改,比如把route,animate等模块出去,让用户自己去选择。追问那它为什么要写入sql语句列?为什么要有双向传值哪?就是当初在创建时为什么要加入这俩样哪?

angularjs怎么从数据库获取数据

function ctrl($http,$scope){

var url = '../login/save.html',

transFn=function(obj) {

var str = [];

for(var p in obj){

str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));

}

return str.join("&").toString();

};

$scope.login = function(user){

var data=transFn(user);

$http.post(url+"?"+data).success(function(data, status, headers, config){

if (data.success){

}else{

}

}).error(function(data, status, headers, config){

alert("error");

});

};

}

如何使用mvc实现webapi的增删改查

1.创建项目:visual C# —> ASP.NET MVC 4 web应用程序 模板—>web api;

2.注册路由:  

路由表中的每一个条目都包含一个路由模板。这个Web API默认的路由模版是"api/{controller}/{id}"。在这个模版中,“api”是一个文字式路径片段,而{controller}和{id}则是占位符变量。

当Web API框架接收一个HTTP请求时,它会试图根据路由表中的一个路由模板来匹配其URI。如果无路由匹配,客户端会接收到一个404(未找到)错误。

3.linq to sql连接数据库

1.建立数据库建表

2.在models文件夹里面新建linq to sql类文件

3.工具->连接到数据库

4.将要用的表拖入设计区

5.获取数据库Getway。"linq to sql class"文件名+Datacontext实例化这个对象,数据表就会映射到一个集合属性中,personDataDataContext db = new personDataDataContext();

6.增删改查

增:

public Boolean Post([FromBody]UserInfo userInfo)   {   

personDataDataContext db = new personDataDataContext();

var s1 = new test2   

{   

UserName =userInfo.UserName,   Id=userInfo.Id,   Age=userInfo.Age   

};

if (db.test2.SingleOrDefault<test2>(s => s.Id == userInfo.Id) == null)   

{   

db.test2.InsertOnSubmit(s1);   

db.SubmitChanges();   

return true;   

}   else {   

return false;   

}

}

删:

public bool Delete(int id)   

{   

personDataDataContext db = new personDataDataContext();   

var deleteperson = db.test2.SingleOrDefault<test2>(s => s.Id == id);   

if (deleteperson == null)   

{   

return false;   

}   else {   

db.test2.DeleteOnSubmit(deleteperson);   

db.SubmitChanges();   

return true;   

}

}

改:    

public Boolean Put(int id, [FromBody]UserInfo userInfo)   

{   

personDataDataContext db = new personDataDataContext();   

var editperson = db.test2.SingleOrDefault<test2>(s => s.Id == userInfo.Id);   

if (editperson == null)   

{   

return false;   

}   else {   

editperson.Age = userInfo.Age;   

editperson.UserName = userInfo.UserName;   

db.SubmitChanges();   

return true;   

}   

查:

public IEnumerable<test2> Get()   

{   

personDataDataContext db = new personDataDataContext();   

var query = from s in db.test2   

orderby s.UserName   

select s;   

return query;   

}

// GET api/values/5   

public string Get(int id)   

{   

return "value";   

}

这里我新建了一个userinfo类

public class UserInfo   {     public string UserName { get; set; }     public int Id { get; set; }     public int Age { get; set; }   }

用来接收前端页面ajax请求中的data数据,s => s.Id == userInfo.Id是lamda表达式创建委托方法意思是在db.test2的person集合中查找某个person的Id与userinfo接收到的id相等的person对象

如何使用AngularJs打造权限管理系统【简易型】_AngularJS

一、引言

本文将介绍如何把AngularJs应用到实际项目中。本篇文章将使用AngularJS来打造一个简易的权限管理系统。下面不多说,直接进入主题。

二、整体架构设计介绍

首先看下整个项目的架构设计图:

从上图可以看出整个项目的一个整体结构,接下来,我来详细介绍了项目的整体架构:

采用Asp.net Web API来实现REST 服务。这样的实现方式,已达到后端服务的公用、分别部署和更好地扩展。Web层依赖应用服务接口,并且使用Castle Windsor实现依赖注入。

显示层(用户UI)

显示层采用了AngularJS来实现的SPA页面。所有的页面数据都是异步加载和局部刷新,这样的实现将会有更好的用户体验。

应用层(Application Service)

AngularJS通过Http服务去请求Web API来获得数据,而Web API的实现则是调用应用层来请求数据。

基础架构层

基础架构层包括仓储的实现和一些公用方法的实现。

仓储层的实现采用EF Code First的方式来实现的,并使用EF Migration的方式来创建数据库和更新数据库。

LH.Common层实现了一些公用的方法,如日志帮助类、表达式树扩展等类的实现。

领域层

领域层主要实现了该项目的所有领域模型,其中包括领域模型的实现和仓储接口的定义。

介绍完整体结构外,接下来将分别介绍该项目的后端服务实现和Web前端的实现。

三、后端服务实现

后端服务主要采用Asp.net Web API来实现后端服务,并且采用Castle Windsor来完成依赖注入。

这里拿权限管理中的用户管理来介绍Rest Web API服务的实现。

提供用户数据的REST服务的实现:

从上面代码实现可以看出,User REST 服务依赖与IUserService接口,并且也没有像传统的方式将所有的业务逻辑放在Web API实现中,而是将具体的一些业务实现封装到对应的应用层中,Rest API只负责调用对应的应用层中的服务。这样设计好处有:

REST 服务部依赖与应用层接口,使得职责分离,将应用层服务的实例化交给单独的依赖注入容器去完成,而REST服务只负责调用对应应用服务的方法来获取数据。采用依赖接口而不依赖与具体类的实现,使得类与类之间低耦合。REST服务内不包括具体的业务逻辑实现。这样的设计可以使得服务更好地分离,如果你后期想用WCF来实现REST服务的,这样就不需要重复在WCF的REST服务类中重复写一篇Web API中的逻辑了,这时候完全可以调用应用服务的接口方法来实现WCF REST服务。所以将业务逻辑实现抽到应用服务层去实现,这样的设计将使得REST 服务职责更加单一,REST服务实现更容易扩展。

用户应用服务的实现:

这里应用服务层其实还可以进一步的优化,实现代码层级的读写分离,定义IReadOnlyService接口和IWriteServie接口,并且把写操作可以采用泛型方法的方式抽象到BaseService中去实现。这样一些增删改操作实现公用,之所以可以将这里操作实现公用,是因为这些操作都是非常类似的,无非是操作的实体不一样罢了。其实这样的实现在我另一个开源项目中已经用到:OnlineStore.大家可以参考这个自行去实现。

仓储层的实现:

用户应用服务也没有直接依赖与具体的仓储类,同样也是依赖其接口。对应的用户仓储类的实现如下:

四、AngularJS前端实现

Web前端的实现就是采用AngularJS来实现,并且采用模块化开发模式。具体Web前端的代码结构如下图所示:

使用AngularJS开发的Web应用程序的代码之间的调用层次和后端基本一致,也是视图页面——》控制器模块——》服务模块——》Web API服务。

并且Web前端CSS和JS资源的加载采用了Bundle的方式来减少请求资源的次数,从而加快页面加载时间。具体Bundle类的配置:

首页 Index.cshtml

五、运行效果

介绍完前后端的实现之后,接下来让我们看下整个项目的运行效果:

六、总结

到此,本文的所有内容都介绍完了,尽管本文的AngularJS的应用项目还有很多完善的地方,例如没有缓冲的支持、没有实现读写分离,没有对一些API进行压力测试等。但AngularJS在实际项目中的应用基本是这样的,大家如果在项目中有需要用到AngularJS,正好你们公司的后台又是.NET的话,相信本文的分享可以是一个很好的参考。另外,关于架构的设计也可以参考我的另一个开源项目:OnlineStore和FastWorks。

显示全文