锁定老帖子 主题:封装json ajax函数
精华帖 (0) :: 良好帖 (0) :: 新手帖 (10) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-18
/** * 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也不太好),因为它不一定什么时候执行。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-18
可以控制是否启用异步模式
|
|
返回顶楼 | |
发表时间:2010-01-18
itstarting 写道 可以控制是否启用异步模式 这个还没有接触过呢,还请指教啊! |
|
返回顶楼 | |
发表时间:2010-01-18
...
var o = XmlHttp.create(); var asyncFlag = true;//是否异步标志:true|false o.open("POST", url, asyncFlag); |
|
返回顶楼 | |
发表时间:2010-01-18
success 是回调函数。
|
|
返回顶楼 | |
发表时间:2010-01-18
ylrainbow 写道 success 是回调函数。 成功时候的回调函数 |
|
返回顶楼 | |
发表时间:2010-01-18
itstarting 写道 ... var o = XmlHttp.create(); var asyncFlag = true;//是否异步标志:true|false o.open("POST", url, asyncFlag); 受教了 |
|
返回顶楼 | |
发表时间:2010-01-18
什么课叫异步,想想,难道你调用了后就能返回!!!
|
|
返回顶楼 | |
发表时间:2010-01-18
jquery 也对ajax操作作了封装:
jQuery.post(url, [data], [callback], [type]) |
|
返回顶楼 | |
发表时间:2010-01-18
这种东东直接用库就好了,自己真没必要再去写
|
|
返回顶楼 | |