本帖最后由 liujianliang 于 2010-07-01 12:25:50 编辑

解决方案 »

  1.   

    因为它是异步执行的,
    所有最外面的alert会先执行。
    所以你就看到外面的是空的了。
    同步执行就不会有问题了,
    参考下面代码,你就明白了:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT=""> <script language="javascript" type="text/javascript" src="jquery-1.4.2.js"></script>
    </HEAD> <BODY>
    <SCRIPT LANGUAGE="JavaScript">
    var d = "";
    <!--
    //同步 async: false
    //默认 async: true
    $.ajax({url: "http://www.baidu.com", async: false, success: function(data) {
    d = data;
    alert(d);
    }}); alert(d); //-->
    </SCRIPT>
    </BODY>
    </HTML>
      

  2.   

    你不就是想把所有返回的值作为选项加入下拉框吗,那就直接在上一个ALERT那里加好了。
    至于你说的这个现象,是有点不可思议,目前的代码看不出来。
      

  3.   

    更好理解的一个例子:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT=""> <script language="javascript" type="text/javascript" src="jquery-1.4.2.js"></script>
    </HEAD> <BODY>
    <SCRIPT LANGUAGE="JavaScript">
    var d = ""; <!--
    //同步 async: false
    //默认 async: true
    $.ajax({url: "http://www.baidu.com", async: true, success: function(data) {
    d = data;
    //alert(d);
    }}); alert(d); //这里面设置2秒,
    //根据你网速来设
    //保证此时$.ajax已经返回
    setTimeout(function(){alert(d);}, 2000); //-->
    </SCRIPT>
    </BODY>
    </HTML>
      

  4.   


    没有值的原因就是ajax赋值还没有完成,最下面的alert就取值了。所以还是空值