javascript赋值问题

2024-11-19 06:22:38
推荐回答(6个)
回答(1):

ajax是异步的!
1.你的声明是var values;这个alert就是undefined。
2.你的alert发生在ajax发送请求数据回来之前,那么就是1里说的。
3.由于你alert一个undefined,在你alert和你点击过程中的这段时间里,ajax异步的数据回来了,自然你第二次alert的values会有数据!

解决方式:1.改成同步的,详细的可以上网查!
2.异步回来的值如果赋值给请求外的变量,那么不要在请求完马上用!如果非要用可以考虑用个计时器setTimeout处理!
3.在异步函数返回后,在返回函数中把值直接处理!

回答(2):

是不是时间延时的问题:你放在里面看看,注意弹出来的顺序,赋值是没问题的:
var guid=entGuid();
var tableV;
var values;
$.ajax({
type:"POST",
dataType:"string",
// url:"../../Handler/Advice.ashx?guid="+Request,
url:"../../Handler/SetMsgContext.ashx?EntGuid="+guid,
success:function (result){
if(result !="")
{
values=result;//result.split('|');
alert ("里面"+values);
}

}

});
alert ("外面"+values);

回答(3):

$.ajax方法默认是异步执行的,即$.ajax(..)后面的代码“ alert(values) ” 并不会等到ajax的success回调方法执行完毕才执行。所以有可能后面的alert会出现undefined,其实结果是不定的,换个浏览器可能还会出现别的结果。
$.ajax({
asyn:true//此参数可以保证后面的alert时正确
})

回答(4):

这个涉及到延迟和异步的问题。你使用的应该是jQuery的AJAX。AJAX都有一个特性就是可以异步读取。你第一次alert的时候,ajax还没读取完数据。你这样写法是错误的。应该把加载完需要处理的代码写到 success:function(){ }里面。里面才是加载完才处理的环境。也就是说ajax跟你那个alert是同时在进行的,而不是ajax完成以后才施行alert

回答(5):

这个是异步的。。最开始的alert是你的声明的undefined
第二次就是你请求回来的值了。主要是处理的时间问题

回答(6):

器就是客户端解释的
你那句<% defcode = "%>实在服务器端的...defcode 的值到浏览器时已经被付好了 不可能被javascript再改变了
不知道你这么写的目的是什么
另外,虚机团上产品团购,超级便宜