3

单击时,我的一个锚点出现问题,它会抛出TypeError: obj is null一个项目。所有其他都完美地工作,正在传递的对象没有差异。在 4 个相同项目的列表中,只有一个错误。全部console.logs显示没有未设置的数据。我已经到了完全被调试困住的地方。

    $('.admin-user-list-click').live('click', function(evt) {
        evt.preventDefault();
        var user_id = $(this).attr('user_id');
        var screen_id = $(this).attr('screen_id');
        var href = $(this).attr('href');
        var last_updated = $(this).attr('updated');
        var last_login = $(this).attr('last_login');
        var user_data = [];
        var template_structure = {logged_in: 'last_login', last_updated: 'last_updated', user_data: user_data, screen_id: screen_id, screen_data: [], identifier: 'screen'};
        var displayContainer = $(this).closest('.admin-page').find('.admin-display');
        $.ajax({
            url: href + '/index/'+user_id,
            success: function(data){
                //Basic user information
                var result = $.parseJSON(data);
                $.each(result, function(k, v) {
                    user_data.push({identifier: k, data: v});
                });
                $.ajax({
                    url: href + '/get_user_data/'+user_id,
                    success: function(data){
                        //Question and answers from registeration
                        var decode = $.parseJSON(data);
                        template_structure.screen_data = decode;
                        console.log(displayContainer)
                        console.log(pending_template)
                        console.log(template_structure)
                        console.log(pending_template(template_structure))
                        displayContainer.html(pending_template(template_structure));
                    }
                })

            }// closure of success
        })

}); //closure of click event

console.log(displayContainer) 的输出[div.admin-display]


console.log(pending_template) 的输出function()


console.log(template_structure) 的输出Object { logged_in= "2012-10-26 08:40:16", user_data=[14], screen_id= "0001", more...}


console.log(pending_template(template_structure)) 的输出什么也不显示

有问题的行在 jquery.1.8.2 中的 583 上

// args is for internal usage only
each: function( obj, callback, args ) {
    var name,
        i = 0,
        length = obj.length, //this is the line that errors

console.log(obj)它显示 出错时 Jquery 登录出错

当它工作时 Jquery登录工作

4

1 回答 1

1

问题是由于我创建的车把助手

Handlebars.registerHelper('json_check', function(answer, answer_type) {
    if(answer_type == 'json' && answer !== ''){
        text = '';
        var response = $.parseJSON(answer);
        $.each(response, function(key, value) {
            text += "<p>"+key+"</p><p>"+value+"</p>";
        });
        return new Handlebars.SafeString(text);
    } else {
        return answer;
    }
});

问题是起初我没有检查答案是否为空字符串。所以试图 parseJson 一个空字符串会引发错误。

于 2012-10-25T21:39:11.703 回答