首页 新闻 搜索 专区 学院

js变量赋值的问题

0
[已解决问题] 解决于 2011-11-10 09:57

var suerurl="第一次";
function downsureo()
{
    $.ajax({
        type: "POST", //用POST方式传输       
        url: "/Handler/DownLoad.ashx", //目标地址
        data: "NewsID=" +2+ "&ServerID=" + 2,
        complete: function() {

        }, //接收数据完毕
        success: function(msg) {

            var response = msg;
            var ss = response.split("$");
            var msga = ss[0];
            var urls = ss[1];
            if(msga !="下载成功")
            {
            alert(msga);
            }
            else if (msga == "下载成功") {
                suerurl=urls;//假定这个地方urls 值是 “谢谢你,点击我”
            }
        }
    });
}



function downok() {
downsureo();
alert(suerurl);
    }


为什么这个时候  当我点击按钮调用downok()这发方法的时候,第一次输出的是 “第一次”,当我第二次,以及以后点击的时候 输出的又是“谢谢你,点击我”  我想第一次输出的时候就让他输出 “谢谢你,点击我”  该怎么做呢?

问题补充: function downok() { downsureo(); ; } 上面写错了 应该是 function downok() { downsureo(); alert(suerurl); ; }
飞翔的鱼的主页 飞翔的鱼 | 初学一级 | 园豆:3
提问于:2010-10-27 11:08
< >
分享
最佳答案
0

你的ajax默认是异步,所以会先执行downsureo()下面的alert(suerurl);

而js解析时会先找到全局的suerurl所以得到"第一次",楼主把ajax请求加个async: false;为同步吧,或者把alert放到success回调函数里...

三桂 | 老鸟四级 |园豆:3565 | 2010-11-11 10:12
其他回答(5)
0

把输出的代码写到suerurl=urls;//假定这个地方urls 值是 “谢谢你,点击我”这一句后面

Gray Zhang | 园豆:17610 (专家六级) | 2010-10-27 14:06
可是 我就是不要这样写啊 我就是为了用那个方法进行调用 还有其他方法没
支持(0) 反对(0) 飞翔的鱼 | 园豆:3 (初学一级) | 2010-10-27 14:08
那你给ajax方法加个async: false吧
支持(0) 反对(0) Gray Zhang | 园豆:17610 (专家六级) | 2010-10-27 14:20
0

你的意思是第一次并没有输出“谢谢你,点击我”???

代码好像不是很完整吧?你的消息是怎么输出的?

顾晓北 | 园豆:10792 (专家六级) | 2010-10-27 14:12
嗯 对啊 第一次点击的时候 输出的是 “第一次“, 第二次以后每次点击输出的都是”谢谢你,点击我“
支持(0) 反对(0) 飞翔的鱼 | 园豆:3 (初学一级) | 2010-10-27 14:14
你输出的代码在哪儿?你这个suerurl是个全局变量啊,这个可要控制好。。。
支持(0) 反对(0) 顾晓北 | 园豆:10792 (专家六级) | 2010-10-27 14:17
function downok() { downsureo(); alert(suerurl); } 这个方法里面漏掉了
支持(0) 反对(0) 飞翔的鱼 | 园豆:3 (初学一级) | 2010-10-27 15:01
就是 downok() 这个方法里面输出 但是问题是 第一次点击按钮 调用downok()的时候 输出的 suerurl 的值是 “第一次” 当我第二次点击这个按钮的时候 值才会变成 “谢谢你,点击我” 为什么呢 我想第一次让他点击变成 “谢谢你,点击我” 该怎么弄呢
支持(0) 反对(0) 飞翔的鱼 | 园豆:3 (初学一级) | 2010-10-27 15:03
vs现在可以调试js吧?你断点调试一下,你用的哪个?2010?08?
支持(0) 反对(0) 顾晓北 | 园豆:10792 (专家六级) | 2010-10-27 15:13
1

钧梓昊逑 | 园豆:945 (小虾三级) | 2010-10-27 18:25
0

这个存在一个执行顺序先后的问题,也就是说function downok() {
downsureo();
alert(suerurl);
;
}这个方法执行完了之后才会执行success中的内容,应该属于异步回传要注意的地方,所以alert如果放在success的回调函数中执行的话,结果就对了

断肠人在天涯 | 园豆:225 (菜鸟二级) | 2010-10-28 11:51
0

success:是回调函数 是当ajax数据获取成功之后调用的所以 alert(suerurl); 执行在这个函数的前面 要想输出那个 谢谢你,点击我” 就必须把  alert(suerurl); 放到这个回调函数中 

慧☆星 | 园豆:5555 (大侠五级) | 2010-11-10 21:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册