获取$.post $.get回调函数返回值问题
2014-12-11 11:08
162 查看
项目中用Jquery操作,肯定避免不了向服务器发送请求,所以就会用到上面的两个函数。完整的函数格式如下:
? $.get(URL,callback);
? $.post(URL,data,callback);
而某些时候我们要用callback回调函数处理完以后的返回值,常规的思路是定义一个全局变量来接收返回值,然后在$post的外面,函数的里面返回即可。例如,下面为一个js函数:
然后哪里需要这个函数就直接调用即可,例如:
看上去逻辑上貌似没问题,但试过就知道这样是存在问题的了,发现res通常取不到courseDT4。调试就会发现函数的执行顺序并不是顺序执行的。那么自然就想到了$.post发得请求为“异步”请求,所以发出请求后还没等一般处理程序处理返回结果,就执行了为res变量赋值,因此取到的值总为undefined。
经过查询,可以发现Jquery封装好的$.post $.get发得请求都为“异步”请求(最好查看一下Jquery的源码),当然上面的用于获取回调函数返回值的写法是错误的,只需将发送方式改为同步即可,即如下代码:
然后再直接调用函数就没有问题了,如下:
? $.get(URL,callback);
? $.post(URL,data,callback);
而某些时候我们要用callback回调函数处理完以后的返回值,常规的思路是定义一个全局变量来接收返回值,然后在$post的外面,函数的里面返回即可。例如,下面为一个js函数:
function testAsync() { //定义一个全局变量来接受$post的返回值 var result; //调用一般处理程序 $.post("handler/QueryCourseByFirst.ashx", { Sqls: sql4 }, function (courseDT4) { result = courseDT4; }); return result; }
然后哪里需要这个函数就直接调用即可,例如:
//调用函数 var res = testAsync();
看上去逻辑上貌似没问题,但试过就知道这样是存在问题的了,发现res通常取不到courseDT4。调试就会发现函数的执行顺序并不是顺序执行的。那么自然就想到了$.post发得请求为“异步”请求,所以发出请求后还没等一般处理程序处理返回结果,就执行了为res变量赋值,因此取到的值总为undefined。
经过查询,可以发现Jquery封装好的$.post $.get发得请求都为“异步”请求(最好查看一下Jquery的源码),当然上面的用于获取回调函数返回值的写法是错误的,只需将发送方式改为同步即可,即如下代码:
function testAsync() { //定义一个全局变量来接受$post的返回值 var result; //用ajax的“同步方式”调用一般处理程序 $.ajax({ url: "handler/QueryCourseByFirst.ashx", async: false,//改为同步方式 type: "POST", data: { Sqls: sql4 }, success: function (courseDT4) { result = courseDT4; } }); return result; }
然后再直接调用函数就没有问题了,如下:
//调用函数 var res = testAsync();
相关文章推荐
- 获取$.post $.get回调函数返回值问题
- 获取$.post $.get回调函数返回值问题
- 利用iframe上传文件获取返回值的跨域问题
- 关于sqlhelper 调用存储过程 获取 返回值和参数的问题
- PHP无法获取表单post方式提交的数据问题
- ASP.NET后台手动调用POST提交并获取返回值,用于短信平台接口//这是一个短信平台的后台提交功能
- PHP curl post的content-type导致获取不到数据的问题
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- js中一个函数获取另一个函数返回值问题探讨
- 解决在Chrome下无法获取showModalDialog返回值的问题
- jquery ajax 无法获取返回值问题
- js中一个函数获取另一个函数返回值问题探讨
- structs 获取Post数据流问题
- asp.net/C# 执行存储过程技术要点,获取Return返回值,解决“存储过程总返回-1”的问题
- PHP CURL POST无法获取响应内容的问题
- C#执行oraclec存储过程获取返回值的一个问题(使用到临时表)
- 关于sqlhelper调用存储过程获取参数返回值和输出参数的问题
- jquery ajax 无法获取返回值问题
- js jquery ajax 获取函数返回值问题
- .net get post 传递参数 获取返回值