首页 新闻 会员 周边 捐助

关于js调用一般处理程序的问题。

0
悬赏园豆:50 [待解决问题]
 1 function aa{
 2 var flag=true;  
 3 $.get('../../ValidateJScript/aa.ashx', { a: a, b: b}, function(data) {
 4         if (data == "") {
 5          flag=false;
 6         }
 7         
 8     })
 9    return flag;
10 }

当data=""时,按照代码来看,最终返回的flag应该是flase。但实际情况是,返回的flag依然是true.我在$.get()里做过很多尝试,比如说 用 $('#ccc').text("ccc");给控件cc赋值,然后在$.get()外面 拿值(var b=$('#ccc).val();),却拿不到。

 我需要根据data去决定返回值,但明显这种方式解决不了,想请教,是不是哪出了问题,

或者,有没有其它的办法也可以用js调用一般处理程序

达殿的主页 达殿 | 初学一级 | 园豆:137
提问于:2012-06-12 18:56
< >
分享
所有回答(4)
0
看这个代码:
if
(data == "") { flag=false; // 这里的flag似乎是函数内部的局部变量,改了这个flag,外面的flag可能并没有被修改。 }

wang_yb | 园豆:4893 (老鸟四级) | 2012-06-12 19:53

var flag=ture;这个在方法体的第一步就已经定义了。而且我在$.get()里做过很多尝试,外面再拿值的时候都是没有用的。

支持(0) 反对(0) 达殿 | 园豆:137 (初学一级) | 2012-06-13 09:30

@达殿:

我的意思是【flag=false;】中的flag是匿名方法内部的变量,并不会影响外面【var flag=ture;】中的flag。

可以将【var flag=ture;】改为【var flag=100;】,看看是不是返回了100

支持(0) 反对(0) wang_yb | 园豆:4893 (老鸟四级) | 2012-06-13 14:17
0

你可以看看 alert(data == "")是什麽?

無限遐想 | 园豆:3740 (老鸟四级) | 2012-06-12 20:56

那一块是完全没有问题的。

支持(0) 反对(0) 达殿 | 园豆:137 (初学一级) | 2012-06-13 12:11
0

你代码里的$.get是异步执行的,在$.get里的代码改变flag之前,你就已经return flag了,所以return的flag永远是true.

你应该把接下来处理flag的代码放在$.get方法里去执行。

I,Robot | 园豆:9783 (大侠五级) | 2012-06-13 01:29

异步,有可能是这个原因。但在$get()内部直接return true还是false都是没有用的。我发现在$get()内部做任何操作,fuction aa{}都是接收不到的。

1 if (data == "aa") {
2         $('#ccc').text(data);
3           }

然后我在$get()外部再拿$('#ccc').val()...界面上的控件ccc.text会改变,但$('#ccc').val()为空。

支持(0) 反对(0) 达殿 | 园豆:137 (初学一级) | 2012-06-13 09:41

@达殿: 

建议你考虑使用回调方法,代码写多了你就会明白是怎么回事了

支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2012-06-13 21:24

@狼Robot: js跟一般处理程序,用回调。确实是寡闻了,能麻烦给个demo吗?邮箱:403603030@qq.com

支持(0) 反对(0) 达殿 | 园豆:137 (初学一级) | 2012-06-14 09:29
0
 1 function aa{
 2 var flag=true;  
 3 $.get('../../ValidateJScript/aa.ashx', { a: a, b: b}, function(data) {
 4     alert("get方法执行了"); 
 5     if (data == "") {
 6           flag=false;
 7          }        
 8      });
 9 
10     alert("外部方法执行了"); 
11     return flag;
12 }
View Code

你试试这段代码看看,因为get方法是异步请求的,有可能你的get方法还没有处理完,但是后面的retrun已经执行啦,所以你里面的操作没啥用了,不知道对不对,你自己测试看看。

sharplizhi | 园豆:366 (菜鸟二级) | 2013-10-29 16:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册