Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify为一个对象返回空白[],而不是填充的{}_Javascript_Json - Fatal编程技术网

Javascript stringify为一个对象返回空白[],而不是填充的{}

Javascript stringify为一个对象返回空白[],而不是填充的{},javascript,json,Javascript,Json,我看过这篇文章: 而且还与其他论坛进行了交流,搜索了谷歌,但没有找到一个合适的答案 基本上,当我在我保存的[]数组上使用json.stringify时,它会在除一个数组值之外的所有数组上正确创建json字符串,该数组值将保存在[2]。这里举一个例子,stringify如何在数组中同时发布1和2: "1":{"doodleID":"716","tid":"26","outline":"sites/default/files/doodlekin/female24solid.swf","skin":"

我看过这篇文章: 而且还与其他论坛进行了交流,搜索了谷歌,但没有找到一个合适的答案

基本上,当我在我保存的[]数组上使用json.stringify时,它会在除一个数组值之外的所有数组上正确创建json字符串,该数组值将保存在[2]。这里举一个例子,stringify如何在数组中同时发布1和2:

"1":{"doodleID":"716","tid":"26","outline":"sites/default/files/doodlekin/female24solid.swf","skin":"sites/default/files/doodlekin/female24face.swf","hair":"sites/default/files/doodlekin/female24hair.swf","misc":"sites/default/files/doodlekin/female24lips.swf","addlayer1":"","addlayer2":"","addlayer3":"","doodlename":"Mom","headsize":"95","flip":"true","skincolor":"E8B18C","skinblush":"sites/default/files/skin_color/e8b18c.swf","haircolor":"855D33","mouth":"sites/default/files/mouth/lips_color_d6570a_1.swf","neck":"sites/default/files/neck/pearl_necklace_solid.swf","neck_optlayer":"sites/default/files/neck/pearl_necklace_color.swf","neck_optcolor":"f8e5be"},
"2":[]
它正确地写出了一个值,但是当它变成2时,值没有被正确地解析为json字符串。因此,您知道保存的数组在1和2值的情况下是什么样子的,这里(数组较大,我只是认为这应该是您所需要的全部内容,以了解出现了什么问题。如果没有,请告诉我。它与1完美配合,而不是2):

我的问题是,当我使用以下命令时,为什么“保存”[2]会从“保存”中删除: postData=JSON.stringify(已保存)

但保存的数组在显示2时仍然存在。任何帮助都将是巨大的,如果你需要更多的洞察力,我会给你。我之所以使用全局变量,是因为我使用了大约10个不同的函数来调用该变量,我不想通过设计器忽略它

更新:刚刚意识到这个问题只发生在firefox上。我正在运行Firefox4 Beta 7。有没有可能是json.stringify无法正常工作的原因?Irt正在使用Chrome和IE 8

更新2:整个保存的代码:

function userSavedDoodlekin(flag)
{   
    // For leave page check
    addToCartPage = "true";

    pID = $("#neededInfo .productID").text();
    tID = $("#neededInfo .templateID").text();
    pAttr = new Object();
    tBg = $("#neededInfo .templateBG").text();
    tCoords = $("#neededInfo .templateCoords").text();

    $("#neededInfo .productAttr").each(function(){
        pAttr[$(this).attr('alt')] = $(this).text();
    });

    store_doodlekin("product", pID, "productID");
    store_doodlekin("product", pAttr, "productAttr");
    store_doodlekin("product", tID, "templateID");
    store_doodlekin("product", tBg, "templateBG");
    store_doodlekin("product", tCoords, "templateCoords");

    // Data for post "json" serialized  
    postData = JSON.stringify( saved );
    flag = '';

    // Check for flag
    if(flag == "true")
    {
        flag = '?saved=true'; 
    }

    // Test before launch
    // alert(postData);
    // alert(dump(saved));

    // Save the doodlekin and start another loop for the next one to save if another in line.
    // Data Sent Back: object.status = (1 or 0), object.data = (error message)

    $.ajax({
        type: 'POST',
        dataType: 'json',
        data: "data="+postData,
        url: "/designer/save",
        success: function(obj){
            if(obj.status == 1){
                // alert(obj.data);
                window.location = "/cart";
            }
            else if(obj.status == 0){
                alert(obj.data);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert("textStatus: "+textStatus);
            alert("errorThrown: "+errorThrown);
        }
    });

}

您使用的是旧版本的原型吗?我也遇到过类似的问题,Prototype(或另一个库)添加了不兼容的.toJSON方法来破坏stringify。

这可能是某个地方的输入错误,可能是数据本身。你能把代码贴在JSON的创建和显示位置吗?配有支架、支架和分号。写一个正常(或失败)的最小问题的例子通常会揭示问题所在。查看文章的更新,我认为不是这样的唯一原因是因为现在我知道它适用于Firefox 3.5+3.6、IE 8和Chrome。我的工作电脑Firefox4 Beta 7上的Firefox中只有这个问题。除此之外,当这个数组被保存时,它在其他浏览器上完全可以正常工作。另外,我刚刚意识到你所说的Prototype和no,我通常在编码时使用jQuery。这是drupal的1.3.2版。2010-08-25这是我使用的当前版本的最后一次更新。如果你查看我的更新,它在Chrome和IE中运行良好,我只是不确定这是因为我使用的是Firefox 4 Beta 7,还是因为插件在做什么,因为它只是偶尔发生。
function userSavedDoodlekin(flag)
{   
    // For leave page check
    addToCartPage = "true";

    pID = $("#neededInfo .productID").text();
    tID = $("#neededInfo .templateID").text();
    pAttr = new Object();
    tBg = $("#neededInfo .templateBG").text();
    tCoords = $("#neededInfo .templateCoords").text();

    $("#neededInfo .productAttr").each(function(){
        pAttr[$(this).attr('alt')] = $(this).text();
    });

    store_doodlekin("product", pID, "productID");
    store_doodlekin("product", pAttr, "productAttr");
    store_doodlekin("product", tID, "templateID");
    store_doodlekin("product", tBg, "templateBG");
    store_doodlekin("product", tCoords, "templateCoords");

    // Data for post "json" serialized  
    postData = JSON.stringify( saved );
    flag = '';

    // Check for flag
    if(flag == "true")
    {
        flag = '?saved=true'; 
    }

    // Test before launch
    // alert(postData);
    // alert(dump(saved));

    // Save the doodlekin and start another loop for the next one to save if another in line.
    // Data Sent Back: object.status = (1 or 0), object.data = (error message)

    $.ajax({
        type: 'POST',
        dataType: 'json',
        data: "data="+postData,
        url: "/designer/save",
        success: function(obj){
            if(obj.status == 1){
                // alert(obj.data);
                window.location = "/cart";
            }
            else if(obj.status == 0){
                alert(obj.data);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert("textStatus: "+textStatus);
            alert("errorThrown: "+errorThrown);
        }
    });

}