ajax请求获得的数据如何传递给外部变量?

请问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本来是异步的,像服务器发送异步的请求之后,不等服务器的,可以换个写法。