怎么把Ajax获取到的值赋值给js变量?
成功从服务器获取到了数据,但是这么返回好像不对,得不到数据,该怎么修改呢?我想直接在js里面,vara=getid(2);调用functiongetid(id){varx...
成功从服务器获取到了数据,但是这么返回好像不对,得不到数据,该怎么修改呢?我想直接在js里面, var a=getid(2);调用 function getid(id) { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { resultdata=xmlhttp.responseText; } } xmlhttp.open("GET","getId.php?id="+id,true); xmlhttp.send(); } return resultdata;
展开
1个回答
展开全部
js是单线程的,常见的问题就是一段复杂的JavaScript脚本会中断页面其它脚本执行,甚至会出现页面失去响应,这也就是为什么ajax的API要设计成异步的。所以,执行function
getid(id)时,先执行其他代码部分,再执行回调函数,即return
resultdata的执行顺序在ajax回调函数resultdata=xmlhttp.responseText之前,所以是得不到数据。
解决办法:针对Ajax请求返回的数据,建议在回调函数中处理吧。【如果你一定要这样用,可以使用一个递归的setTimeout不断去check
Ajax请求是否已经完成(resultdata是否已经被赋值),如果已经完成就使用result的值,退出递归,否则继续~~(网友介绍的方法,没试过,你可以试试)】
getid(id)时,先执行其他代码部分,再执行回调函数,即return
resultdata的执行顺序在ajax回调函数resultdata=xmlhttp.responseText之前,所以是得不到数据。
解决办法:针对Ajax请求返回的数据,建议在回调函数中处理吧。【如果你一定要这样用,可以使用一个递归的setTimeout不断去check
Ajax请求是否已经完成(resultdata是否已经被赋值),如果已经完成就使用result的值,退出递归,否则继续~~(网友介绍的方法,没试过,你可以试试)】
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询