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()这发方法的时候,第一次输出的是 “第一次”,当我第二次,以及以后点击的时候 输出的又是“谢谢你,点击我” 我想第一次输出的时候就让他输出 “谢谢你,点击我” 该怎么做呢?
你的ajax默认是异步,所以会先执行downsureo()下面的alert(suerurl);
而js解析时会先找到全局的suerurl所以得到"第一次",楼主把ajax请求加个async: false;为同步吧,或者把alert放到success回调函数里...
把输出的代码写到suerurl=urls;//假定这个地方urls 值是 “谢谢你,点击我”这一句后面
你的意思是第一次并没有输出“谢谢你,点击我”???
代码好像不是很完整吧?你的消息是怎么输出的?
分
这个存在一个执行顺序先后的问题,也就是说function downok() {
downsureo();
alert(suerurl);
;
}这个方法执行完了之后才会执行success中的内容,应该属于异步回传要注意的地方,所以alert如果放在success的回调函数中执行的话,结果就对了
success:是回调函数 是当ajax数据获取成功之后调用的所以 alert(suerurl); 执行在这个函数的前面 要想输出那个 谢谢你,点击我” 就必须把 alert(suerurl); 放到这个回调函数中