var user = eval('(' + http.responseText + ')');你这东西也没有意义啊。

解决方案 »

  1.   

    一般的加括号,是为了返回值
    不加不会返回值
    好比
    var wc = eval("{}");
    alert(wc);
    就是undefined;
    如果
    var wc = eval("({})");
    alert(wc);
    就是object这个()
    就是返回的意思。
    有一个很典型的写法(function () {
    })();
    这个就是把函数返回,然后执行。
      

  2.   

    不明白为什么
    {}能表示一个对象
    eval("{}")就不能
      

  3.   

    不用eval的话是有没有括号都可以
    用eval就一定要括号
    想不明白啊
      

  4.   

    用eval就一定要括号
    --------------------
    也不一定的,比如 var arr = eval( "[1,2,3]" ); 就可以正确返回数组。
      

  5.   

    <script language="javascript">
    <!--
        //1
        var arrayStr = "['a', 'b']";
        arrayObj = eval(arrayStr);
        alert(arrayObj[0]);    //2.
        var str = "{attr1: 'attribute1', attr2: 'attrbiute2'}";
        eval("var obj = " + str);
        alert(obj.attr1);
    //-->
    </script>对于一般的变量、函数调用,可用方式1,但对于类似{}对象,须要方式2
      

  6.   

    学习~~~
    但是我觉得还是最好不用eval()因为人家可以嵌入代码在里面执行~~~
      

  7.   

    谈谈我的理解:
    那个内层的'('是用来组合字符串的
    比如你那个http.responseText = key:value
    那么eval的是(key:value)
    即string = "(key:value)"
    eval(string)
      

  8.   

    对了上面有点错'{"key":"value"}'再加一个( )是生成js对象
      

  9.   

    上面说的还是不明不白啊
    var wc = eval("({})");
    里面的括号为什么是必须的呢
    有什么意义"为了返回值",那为什么这样才有返回值
    这里的执行过程是怎么样的呢
      

  10.   

    像excellent_biti() 说的对于一般变量是可以的
    var str = "123";
    var aa = eval(str);
    alert(aa);那应该说明eval是能返回值的
    但对于对象就不行
    var str = "{}";
    var bb = eval(str);
    alert(bb);
    要这样
    var str = "{}";
    var bb = eval("("+str+")");
    alert(bb);1 是不是eval能返回一般变量但不能返回对象
    2 为什么加了括号就可以返回了,是规定这样的还是执行方式不同了还是什么其他原因
    3 那个(function () {})();写法确实经典,那是不是说明小括号能使对象返回一个指针
    4 同样的 eval("("+str+")"); 估计也是返回了对象的指针而不是对象本身所以能正确返回
    5 那我想var b = {};其实b也只是指针所以eval返回指针当然也是可以的
    6 那最后就只是一个问题了,eval是不是不能返回对象
      

  11.   

    1和2 我的理解是用eval返回json变量,先要进行字符串化,再生成js对象.要把字符串变成运行环境中的对象就得用eval():responseText=》string =》eval(string)所以那个内层的'('是生成字符串,内层的'('是生成js对象.
    3.有点递归味道~~~具体我也说不上
    var str = "{}";
    var bb = eval(str);
    alert(bb);
    也是上面我说的问题,不过这只是个人理解,呵呵~`
      

  12.   

    给这个问题升级一下啊,最近在研究,感觉有点意思,是这样的,通过JSON返回了一个串型化对象对象的组成如{"attr1":"attrvalue1","attr2":"attrvalue2"}然后在客户端处理,处理如下:       var item = eval('(' + req.responseText + ')');
              alert(item.attr1);
              alert(item.attr2);这样能够成功的的到值attrvalue1,attrvalue2现在的问题是,如果这些attrvalue1上一般的字符串啊,数据啊什么的时候是可以的,但是如果出现一些特殊的字符如"\","@","."
    js客户端这边会报没有正常的结束字符串我的attrvalue1值为:---------------
    尊敬的@name@先生/女士:
                感谢您使用,2007-03-26至2007-05-01我将推出,月月有奖活动,欢迎踊跃参与.-----------------
    欢迎大家讨论啊!