douwen3836 2016-04-20 03:18
浏览 41
已采纳

未捕获的TypeError:不能在jquery / json中使用'in'运算符

I create a json in php like this:

$details= array();
$ret = array();

for($i=0;$i<3;$i++) { $details["name"] = "name".$i;  $ret[] = $details;}

And then return it to a jquery ajax:

echo json_encode($ret,JSON_UNESCAPED_UNICODE);
die();

In jQuery ajax:

$.ajax({
    url: "index2.php?id=upload",
    type: "POST",
    data:  new FormData($("#form")[0]),
    contentType: false,
    cache: false,
    processData:false,
    returnType:"json",
    success: function(data)
    {
        console.log('names:'+JSON.stringify(data));
        $.each(data, function(i) 
        { 
            console.log('name:'+data[i]['name']);
         }
    },

first console log prints,but second: I get this error:

jquery-2.2.3.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in [{"name":"name1"},{"name":"name2"},{"name":"name3"}]

Also I try

$.each(JSON.parse(data), function(i) 
                { ..}

but I print empty:

name:undefined

展开全部

  • 写回答

2条回答 默认 最新

  • douceng7070 2016-04-20 03:36
    关注

    When the javascript converts your json string into a javascript data type it will be an array of objects like this

    Array
    (
        [0] => stdClass Object
            (
                [name] => name0
            )
    
        [1] => stdClass Object
            (
                [name] => name1
            )
    
        [2] => stdClass Object
            (
                [name] => name2
            )
    
    )
    

    So your javascript should be

    Also returnType:"json" should be dateType:"json" as far as I know there is not such parameter as returnType:

       $.ajax({
            url: "index2.php?id=upload",
            type: "POST",
            data:  new FormData($("#form")[0]),
            contentType: false,
            cache: false,
            processData:false,
            dateType:"json",
            success: function(data)
            {
                console.log('names:'+JSON.stringify(data));
                $.each(data, function(i,v) 
                { 
                    console.log('name:'+v.name);
                }
            },
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部