请问cnname如何能获取到json.cnname的值?
function findTypeName(id){
var cnname;
$.ajax({
url:urlheader+"selectTypeById.html",
data:{id:id},
datatype:"json",
success:function(data){
var json = eval('(' + data + ')');
console.log(json);
cnname=json.cnname;
}
});
return cnname;
}
你ajax要用同步的就可以了
如:
$.ajax({
url: "some.php",
async: false
});
这样不能赋值??
感觉是json.cnname,,没获取到,
应该是已经得到了,你尝试不要return先alert一下,看看有没有值,你确定json.cnname有值么?
由于是异步的, cnname=json.cnname这个肯定能赋值成功,但是用return 就不合适了,因为异步的原因,一般会先return 了后有 cnname=json.cnname赋值,所以楼主的return没有用!要么改成同步,要么看楼主的需求具体是什么,更改代码!
这是一个变量的作用域问题,解决的方法有几个,
第一,把需要cnname这个变量的函数放到success里面去执行,然后以传参的方式把cnname传过去就好了
第二,把cnname设为全局变量,并且在success里面做一个开关,实时监测success状态,只有成功之后再去调用cnname这个变量
JS是单线程的,会先走完主函数findTypeName(id),再去走$.ajax();所以没有获取到值,这种队列模式造成了异步的假象,其实是先走主函数,然后遇到了$.ajax();会让$.ajax();选择合适的时机添加到队列中等待执行,主函数执行完之后,再去队列中执行执行等待的队列,就算设置了$.ajax()立即进去队列,也不会马上执行,还是要先走完主函数。
在js里面加个$.ajaxSetup({
async : false
});
可以根据id获或者class获取
id获取的方法是$("id").val()
class的方法是$(".classid").val()
你想把值传到外部 cnname在声明的时候在方法外面声明,在你的方法里面直接赋值就能传递了
ajax本来是异步的,像服务器发送异步的请求之后,不等服务器的,可以换个写法。