本帖最后由 zhoumengkang 于 2013-09-12 10:03:14 编辑

解决方案 »

  1.   


    var str2 = eval('('+str+')');
      

  2.   

    jquery 在 ajax 操作时会将 json 对象转换成 url 参数串的格式
    所以你在 php 可以用正常方式接受jq 提供有序列化函数 htmlSerialize、Serialize
      

  3.   

    我是说怎么直接把js对象到php这边就直接变成数组了?正常使用,是正常使用,数据类型肿么转换了?
      

  4.   

    is 在执行 $.post 用 Serialize 方法将 {'data':{'a':'b','aa':'bb'}}
    转成了 data[a]=b&data[aa]=bb 发送到 php
    php 收到 data[a]=b&data[aa]=bb 后,调用 parse_str 函数,将其转换为array (
      'data' => 
      array (
        'a' => 'b',
        'aa' => 'bb',
      ),
    )赋值给 $_POST 数组
      

  5.   

    var str2 = eval('('+str+')');这句,确实直接把json转换成了js对象了。
    但是,$.post你确定能够发送对象到php上?即使你发送一个数组上去,他也会把数组拆成一个一个的参数发送上去的。
    他先把你的对象搞成数组,然后再把数组搞成一个一个参数,然后在php那边一个个参数又合并成一个数组。其实跟你通常看到的get方式参数串差不多,也没听说过get还能get出来一个对象。纯臆断,欢迎拍砖。
      

  6.   

    不知道你还能不能看到,今天在手册上看到这段话,就更加容易理解了:
    http://www.php.net/manual/zh/reserved.variables.httprawpostdata.phppost传过来的值应该是:$HTTP_RAW_POST_DATA
    而我们用的$_POST是在此基础上格式化了的数据