解答:
回调函数里面的变量如何在函数外部也能访问到只需要回调内部变量赋值给全局变量就可以了,但一般这问题都出在没有搞清楚同步和异步的区别,于是虽然赋值给全局变量了,但立即访问全局变量还是没有值的情况。
解决:
注意ajax访问的同步和异步。
使用$ajax访问,别用get,post等已经封装过的,这类没有$ajax来的灵活。
$ajax({url:"/jquery/test1txt",async:false});//注意这里async,默认为true表示异步,false表示同步。如果不想使用回调的方式进行后续处理,则可以设置成同步模式。
1、创建空的aspnet mvc项目。
2、添加页面1)添加HomeController2)添加Index页面3)添加Content文件夹,并添加Jquery源文件(jquery-1124minjs)。
3、添加测试DOM1)在Head标签内引入jquery 2)添加一个输入待获取session名称的文本框 3)添加一个按钮,点击按钮通过ajax获取session4)添加一个显示session值的div。
4、添加后台代码1)在HomeController的Index方法内,设置一个session值2)在HomeController中添加GetAjaxSession方法,接收session名称,返回值。
5、添加ajax方法获取session 1)给按钮绑定jquery点击事件2)在点击事件中获取文本框中的session名称3)通过ajax提交后台方法,并处理返回结果。
6、运行效果如下1)输入session名称2)点击按钮,执行jquery的按钮点击事件3)得到后台的session后,写回界面。
success: function(result){
var result=trim(result);
//第一种跳到else的原因是这里去空格有问题,应该使用,var result=$trim(result);
第二种是因为返回的数据是Json格式的字符串,所以resultres是undefined,就应先转换为json串后才能使用,result=JSONparse(result);然后 resultres
在外部定义一个全局变量,然后在回调函数中进行赋值,接下来就可以使用该值了。但是要注意的是,ajax是异步调用,因此上什么时候会被赋值,这个时间不固定,在使用这个全局变量之前,需要判断一下是否已经被回调函数赋值。
这种情况最好是把处理响应的逻辑写到匿名名方法里面:
function setHtml(){
$getJSON("ajax!getList",function(data){
html = datasection;
alert(html);
//处理响应的逻辑写在这
});
}
如果处理逻辑很长,你写一个函数在外面就好了:
function setHtml(){
$getJSON("ajax!getList",function(data){
html = datasection;
afterGetList(html);
});
}
function afterGetList(html){
alert(html);
//处理响应的逻辑写在这
}
同步方法最好不用,网络出点小状态IE下就会有假死的情况,多来两次用户就得有反应了
以上就是关于jquery ajax回调函数里面的变量如何在函数外部也能访问到全部的内容,包括:jquery ajax回调函数里面的变量如何在函数外部也能访问到、jquery ajax获取后台request中的值 ,前台AJAX如下,后台如图、请问一下ajax外部的test可以得到ajax里面的res.Data值呢本人小白,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)