无法读取未定义错误的属性“长度”

时间:2014-02-06 20:06:19

标签: javascript php jquery opencv

我已经下载了以下web-based-face-detect-program并编译了它,我的编译器没有显示语法错误,但是当我尝试使用应用程序上传图片时,我得到Cannot read property 'length' of undefined error。我根本没有改变应用程序所以应该没有问题,我对Javascript相当新,所以我可能会犯一个菜鸟错误。继承人js功能代码:

function parse_response(res) {
    var data = jQuery.parseJSON(res);

    if (data.success == false) {
        show_page(form);
        show_message(data.msg);
        return;
    }

    results
        .find(".source-img").html("").end()
        .find(".detected-faces").html("").append("<p>Found " + (data.images.length-1) + " faces:</p>");

    $.each(data.images, function(i, img) {
        var el = '<img src="face-detect/' + img.src + '?r=' + Math.random() + '" alt="" />';
        results.find((i == 0 ? ".source-img" : ".detected-faces")).append(el);
    })

    results.find(".source-img img").bind('click', function(e) {
        var im = data.images[0];
        var el = '<img src="face-detect/' + im.src + '" width="' + im.width + '" height="' + im.height + '" alt="" />';
        $(".lightbox", results).find(".lightbox-content").html(el).end().lightbox("show");
    });

    show_page(results, actions);
}

.find(".detected-faces").html("").append("<p>Found " + (data.images.length-1) + " faces:</p>");是导致错误的原因。以下是我在Chrome控制台中遇到的错误:

Uncaught TypeError: Cannot read property 'length' of undefined app.js:87
parse_response app.js:87
xhr.onreadystatechange app.js:65

其余的代码都在github链接上,如果我错过了什么。那么有人可以向我解释为什么我得到这个未定义的错误以及我如何解决它?

1 个答案:

答案 0 :(得分:0)

似乎数据对象没有images属性。在错误行之前,使用JSON.stringify(data)函数检查数据对象结构。

您可以使用:

console.log(JSON.stringify(data))

或者:

alert(JSON.stringify(data))