【问题标题】:how to get rid of Object #<Object> has no method 'push' error?如何摆脱 Object #<Object> has no method 'push' 错误?
【发布时间】:2013-08-09 15:55:45
【问题描述】:

您好,我正在尝试将数据推送到已定义密钥的 JSON 对象,但在我有 alert("3") 和 alert("6") 的行处我仍然收到未捕获的 typeError

 server.on('update_message_from_server', function(data){
                if(data.message_to!=false){
                    alert("1");
                    if(data.message_from==<?php echo $session_user_id;?>){
                        alert("2");
                        if(message_store.hasOwnProperty(data.message_to_email)){
                            alert("3");
                            message_store[data.message_to_email].push((data));
                            str2 = '<div id ="recent_message_log_entry'+data.message_to_email+'"><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                            $(document.getElementById("recent_message_log_entry"+data.message_to_email)).replaceWith(str2);
                        }else{
                            alert("4");
                            message_store[data.message_to_email]= new Array();
                            message_store[data.message_to_email]=data;
                            string = '<div><div>'+data.message_to_email+'</div><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                            $("#new_updates").append(string);
                        }
                    }else{
                        alert("5");
                        if(message_store.hasOwnProperty(data.message_from_email)){
                            alert("6");
                            message_store[data.message_from_email].push((data));
                            str2 = '<div id ="recent_message_log_entry'+data.message_from_email+'"><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                            $(document.getElementById("recent_message_log_entry"+data.message_from_email)).replaceWith(str2);
                        }else{
                            alert("7");
                            message_store[data.message_from_email]= new Array();
                            message_store[data.message_from_email]=data;
                            string = '<div><div>'+data.message_from_email+'</div><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                            $("#new_updates").append(string);
                        }
                    }
                }else{
                    alert("8");
                    alert("Email Does not exist "+data.message_to_email);
                }
                alert(JSON.stringify(message_store));
            });

我该如何解决这个问题?

提前致谢

【问题讨论】:

    标签: javascript html json node.js


    【解决方案1】:

    如果未定义message_store[data.message_from_email],则首先为其分配一个空数组,然后用data覆盖数组而不是将数据推送到数组中

    bug 就在这条线上

    message_store[data.message_from_email]= new Array();
    message_store[data.message_from_email]=data;
    

    应该是

    message_store[data.message_from_email] = new Array();
    message_store[data.message_from_email].push(data);
    

    或缩短

    message_store[data.message_from_email]= [data];
    

    所以

    server.on('update_message_from_server', function(data){
        if(data.message_to!=false){
            alert("1");
            if(data.message_from==<?php echo $session_user_id;?>){
                alert("2");
                if(message_store.hasOwnProperty(data.message_to_email)){
                    alert("3");
                    message_store[data.message_to_email].push((data));
                    str2 = '<div id ="recent_message_log_entry'+data.message_to_email+'"><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                    $(document.getElementById("recent_message_log_entry"+data.message_to_email)).replaceWith(str2);
                }else{
                    alert("4");
                    message_store[data.message_from_email]=[data];
                    string = '<div><div>'+data.message_to_email+'</div><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                    $("#new_updates").append(string);
                }
            }else{
                alert("5");
                if(message_store.hasOwnProperty(data.message_from_email)){
                    alert("6");
                    message_store[data.message_from_email].push((data));
                    str2 = '<div id ="recent_message_log_entry'+data.message_from_email+'"><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                    $(document.getElementById("recent_message_log_entry"+data.message_from_email)).replaceWith(str2);
                }else{
                    alert("7");
                    message_store[data.message_from_email]=[data];
                    string = '<div><div>'+data.message_from_email+'</div><div>'+data.message+'</div><div>'+data.date_posted+'</div></div>';
                    $("#new_updates").append(string);
                }
            }
        }else{
            alert("8");
            alert("Email Does not exist "+data.message_to_email);
        }
        alert(JSON.stringify(message_store));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多