封装json ajax函数

本文介绍了一种封装Ajax函数的方法,简化了多次调用Ajax的过程,并通过实例演示了解决同步问题的有效方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天做项目多次用到了Ajax,有的时候一个js函数中要调用几次,每次都去写一大段麻烦的很,我就想为什么不去把Ajax调用的过程封装一下,把参数和链接传进去,然后把返回值传给调用函数来处理呢。想到我就去做了,写了这个个函数:
	/**
* ajax提交
* @param url
* @param param
* @param callback回调函数
* @return
*/
function jsonAjax(url, param) {
alert(url);
$.ajax({
type:"POST",
url:url,
data:param,
dataType:"json",
success:function(html){
return html;
},
error:function(){
return {result:”error”};
}
});
}

测试:var html = jsonAjax(url, param);
If(html.result == “success”)


可是我每次运行的时候都提示If(html.result == “success”)有错误,html为空,我单步跟踪了一下,jsonAjax方法也执行了。我就很郁闷,就请同事测试了一下。发现他那边一会行一会不行。

感觉单步跟踪不能真实的测试出到底发生了什么,然后我就用alert测试了一下。

	/**
* ajax提交
* @param url
* @param param
* @param callback回调函数
* @return
*/
function jsonAjax(url, param) {
alert(url);
$.ajax({
type:"POST",
url:url,
data:param,
dataType:"json",
success:function(html){
alert(html);
return html;
},
error:function(){
return {result:”error”};
}
});
}

测试:var html = jsonAjax(url, param);
Alert(html);
If(html.result == “success”)


再次运行先是alert了一个”undefined”,接着又alert了一个object

仔细想了一下ajax调用应该是浏览器又开的一个线程,所以在获得html的时候一会可以拿到,一会拿不到。

然后就把函数重新设计了一下:
/**
* ajax提交
* @param url
* @param param
* @param callback回调函数
* @return
*/
function jsonAjax(url, param, callback) {
alert(url);
$.ajax({
type:"POST",
url:url,
data:param,
dataType:"json",
success:callback,
error:function(){
jQuery.fn.mBox( {
message :'恢复失败'
});
}
});
}


顺利执行成功。

虽然在封装ajax方法过程中遇见了些许困难,浪费了一些时间,但是还是挺值的。明白了两点:
第一, js是支持多线程的。
第二, ajax是多线程实现的,不能等待它的返回值(让主线程sleep也不太好),因为它不一定什么时候执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值