beego如何结合ajax,beego与ajax异步提交

本文介绍了在使用beego框架开发网站时,如何通过Ajax进行数据提交,并解决同步问题。作者详细解释了将ajax的async属性设置为false以确保请求完成后再执行后续代码的必要性,同时指出了在异步请求中可能导致的回调函数失效问题。此外,还提及了在表单提交后利用window.location.href进行页面跳转时可能遇到的问题。
摘要由CSDN通过智能技术生成

最近在使用beego开发自己的小网站,前端我采用ajax异步提交数据,具体实现为:

简化的表单:

js程序:

function SubmitRegistInfo()

{

var UserName = document.getElementById("username").value;

var PassWord = document.getElementById("password").value;

$.ajax({

async: false,

type:"POST",

url:"/register/handler",

data:{"username":UserName,"password":PassWord}

}).done(function(msg){

if(msg.Val != null)

{

window.location.href="/"

}

});

}

beego路由处理:

beego.Router("/register/handler", &controllers.LoginController{}, "POST:RegisterInfo")

处理请求和相应:

func (c *LoginController) RegisterInfo() {

username, password := c.GetString("username"), c.GetString("password")

result := struct {

Val string

}{username}

c.Data["json"] = &result

c.ServeJSON()   //响应前端

beego.Debug("username:", username, password)

}

这样就可以实现数据提交了。

这里我实现的时候遇到几个问题:

(1)async: false

ajax默认的提交方式是异步的,也就是async: true,这个时候如果代码直接这样写:

function SubmitRegistInfo()

{

var UserName = document.getElementById("username").value;

var PassWord = document.getElementById("password").value;

$.ajax({

type:"POST",

url:"/register/handler",

data:{"username":UserName,"password":PassWord}

}).done(function(msg){

if(msg.Val != null)

{

window.location.href="/"

}

});

}

这个时候当代码执行到$.ajax这里的时候是不会阻塞的,因为是异步,所以执行$.ajax这里代码的同时还会继续往下执行接下里的代码,

但是$.ajax后面没有代码,则此函数结束,内存释放,这样$.ajax的post请求就会没有处理完函数就释放了,回调函数失效,达不到我们预期的效果。

所以这里我们把async: 设置为false,即为同步请求,则执行$.ajax这里的代码的时候会阻塞,一直等请求处理完才会接着往下执行。

(2)还有个问题是表单的

window.location.href="/"

页面跳转会失效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值