js用不了ajax提示没有该变量

JavaScript017

js用不了ajax提示没有该变量,第1张

刚开始的时候,每次循环是获取不到ajax中的值的,在ajax中,如果想获取到变量I,那么也是有问题了。

解决了半小时,终于明白了问题的所在:

for 循环是一个单线程的东西,而ajax是多线程的,之所以称之为异步同步,是因为执行到ajax的时候去后台开启了一个线程,但是for循环本身就是一个单线程的东西,那么执行到ajax的时候,ajax开启了一个线程,for

循环是没有等他的,知道for循环结束的时候,才会把ajax返回的数据拿回来,所以会出问题

解决办法:只需要把ajax改成同步的就可以了,每次for循环,都要去加载ajax方法,并且拿到他返回的数据,只需要在ajax中间加一个代码就可以搞定了。async: false,//设置成同步

确定了目标之后你成功了10%,但是剩下的90%之中,多数是坚持不懈的努力,你会遇到迷茫、遇到挫折,此时不要放弃,回忆你立定目标的决心,成功就在你眼前!习惯很容易养成,一件事情,只要你能咬牙坚持10天,它自然就成了习惯! 现代人变得越来越浮躁,不妨静下心来用音乐洗礼你的心灵!

你是说隔一段时间提交一次吗?

用定时器即可。

假设你的ajax请求的函数是:

function ajaxRequest()

加一个定时器:

setInterval(ajaxRequest,2000)//间隔两秒执行一次

希望能帮到你,有用的话就采纳!

程序重点位置就是 for(i = 0i <6i++ &&k++)里面的,i++ &&k++,由于一般的编译器,对于逻辑运算符 的处理,按照从左之右,并且如果左面的表达式就可以得到最终的结果,那右边的就不执行了。

所以,本程序中。i++,先运行 i的 &&然后再执行i自加1。

当i=0的时候,第一次进入for循环,for语句执行到i = 0i <6结束,并不执行i++ &&k++,当第一次循环结束后i=0,k=0。

进行第二次循环for语句执行 i <6i++ &&k++。并先执行i++ &&k++。这个时候i=0,&&不需要右边的表达式已经可以知道结果,所以就不执行k++。由此第二次循环后i=1,由于k++没有执行,所以k还是=0。

进入第三次循环,i=1。&&必须要通过计算右边的表达式才能得出结果。所以开始执行k++。所以第三次循环 时候 i=2,k=1

调试与直接运行EXE的结果不同,问题我没有发现,不知道楼上使用的是什么编译器环境?