beego 获取 ajax 数据的实例
beego 获取 ajax 数据的实例
这里有新鲜出炉的 GO 语言教程, 程序狗速度看过来!
Go 语言
Go 是一种新的语言, 一种并发的带垃圾回收的快速编译的语言 Go 是谷歌 2009 年发布的第二款编程语言 2009 年 7 月份, 谷歌曾发布了 Simple 语言, 它是用来开发 Android 应用的一种 BASIC 语言
下面小编就为大家分享一篇 beego 获取 ajax 数据的实例, 具有很好的参考价值, 希望对大家有所帮助一起跟随小编过来看看吧
1. 什么是 AJAX
Asynchronous JavaScript And XML(异步 JavaScript 及 XML), 是指一种创建交互式网页应用的网页开发技术
Ajax 是一种在无需重新加载整个网页的情况下, 能够更新部分网页的技术
2. 如何使用 AJAX
XMLHttpRequest 是 AJAX 的基础
XMLHttpRequest 用于在后台与服务器交换数据这意味着可以在不重新加载整个网页的情况下, 对网页的某部分进行更新
使用 AJAX 大致分四步
1. 创建 XMLHttpRequest 对象//js 代码获取 XMLHttpRequest 对象 (保存为 util.js)
functiongetXmlHttpRequest(){
varxhr;
try{
// Firefox, Opera 8.0+, Safari
xhr=newXMLHttpRequest();
}catch(e){
// Internet Explorer
try{
xhr=newActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xhr=newActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("您的浏览器不支持 AJAX!");
returnfalse;
}
}
}
returnxhr;
}
2. 注册状态回调函数 (当 XMLHttpRequest 对象的 readyState 每次发生变化时调用该回调函数)// 当 xhr.readyState == 4 时所有的步骤都已执行完毕
// 当 xhr.state == 200 时表示已经正确执行
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.state==200){
alter("请求已全部执行, 并且成功");
}
}
3. 建立与服务器的异步连接 (默认为异步)/**
open(method,url,async) 方法
规定请求的类型 URL 以及是否异步处理请求
method: 请求的类型; GET 或 POST
url: 相求处理请求的 url
async:true(异步) 或 false(同步)
通过 time 来保证, 每次发送新的请求
*/
xhr.open("Post","/detailsU?time="+newDate().getTime());
4. 发出异步请求/**
send 方法中发送 json 格式的字符串
*/
xhr.send('{"Index":"'+index+'","Change":"'+i+'"}');
通过以上四步就可以成功的发送请求了
附源码:{{range.PhoneDetails}}
{{.Id}}{{.Name}}{{.Price}}{{.Repertory}}functionfunc1(x){
varcode=prompt("请输入调整的库存大小:");
if(code!=null&&code!=""){
vari=parseInt(code);
if(isNaN(i)){
alert('输入错误');
}else{
varxhr=getXmlHttpRequest();
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.state==200){
alter("请求已全部执行, 并且成功");
}
}
varindex=x.rowIndex;
xhr.open("Post","/detailsU?time="+newDate().getTime());
xhr.send('{"Index":"'+index+'","Change":"'+i+'"}');
alert('修改成功');
}
}else{
alert('输入错误');
}
}
{{end}}
3. 在 beego 中处理 AJAX 的请求
1. 首先在 models 层的 models.go 中创建数据的结构/**
要与传过来的 json 格式字符串对应
'{"Index":"'+index +'","Change":"' + i +'"}'
*/
typeObjectstruct{
Indexstring
Changestring
}
2. 注册相应的路由/**
在 main.go 当中注册相应的路由 (注意与对应路由设置好)
xhr.open("Post", "/detailsU?time=" + new Date().getTime());
"Post:DoUpdate" 用来注册当 Post 方法请求该 URL 处理的函数
*/
beego.Router("/detailsU",&controllers.DetailController{},"Post:DoUpdate")
3. 在 controller 中写好相应的处理函数/**
在对应的函数中处理相应的请求
json.Unmarshal(this.Ctx.Input.RequestBody, ob)
通过 json 来解析穿过来的数据, 并将数据存储在 ob 对象中
在 app.conf 中设置 copyrequestbody = true
*/
func(this*DetailController)DoUpdate(){
ob:=&models.Object{}
json.Unmarshal(this.Ctx.Input.RequestBody,ob)
db,err:=sql.Open("mysql","用户名: 密码 @tcp(IP:3306)/ 数据库名")
result,err:=db.Exec("UPDATE 数据表名 SET 字段 = ? WHERE id = ?",ob.Change,ob.Index)
iferr!=nil{
beego.Error(err)
return
}else{
fmt.Println(result)
}
}
来源: http://www.phperz.com/article/18/0216/362575.html