发布字符串化数组(Javascript和Ruby)时形成错误的JSON

时间:2011-08-12 13:34:25

标签: javascript html ruby-on-rails ruby json

我在这里有一个非常具体的。我基本上试图将一个字符串数组发布到我的一个ruby服务器上并将其处理回对象。问题是,当我发送Json时,它会像这样出现

它非常奇怪的语法会回到服务器上。

所以我的问题是我的错误在哪里,我该如何解决?

1:我的ruby / rails服务器是不是正确解析了json? (我对此表示怀疑,因为无论如何json看起来都很糟糕)

2:这是我构建数组的方式吗?

3:或者是(最有可能)我如何发布我的阵列?


所以只是为了提供更多细节。 在javascript的客户端,我有你的日常字符串数组。 当我运行时:

JAVASCRIPT ARRAY:

 var $arrayToSend = JSON.stringify(headersTitleArr);
 console.log($arrayToSend);

它产生:

[" Page Title "," Description "," Keywords "," Internal Links "," 
External Links "," Content files "," Notes "]

在我的post方法之后列出:

JAVASCRIPT POST:

$.ajax({

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes:$arrayToSend},
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });

在红宝石方面,这是在抛弃params之后出现的情况:

请求的Ruby代码。

RUBY:

puts YAML::dump(params[:elementTypes])
@x = (params[:elementTypes])
@elementTypes = JSON.parse(@x)

和服务器上的打印结果:

--- "[\" Page Title      \",\" Description     \",\" Keywords        \",\" Internal 
Links  \",\" External Links  \",\" Content files   \",\" Notes           \"]"

1 个答案:

答案 0 :(得分:0)

你是混合类型。不要串通任何东西,或将所有东西串起来。在你的情况下,我会替换:

 $.ajax({

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes: JSON.stringify($arrayToSend)},
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });

$.ajax({

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes: headersTitleArr},
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });

jQuery将为您处理字符串化。如果你想使用stringify:

    $.ajax({

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data: JSON.stringify({elementTypes: headersTitleArr}),
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });

您必须发送javascript对象或表示JSON的字符串。但混合这两者将导致数据形成不良。