我在这里有一个非常具体的。我基本上试图将一个字符串数组发布到我的一个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 \"]"
答案 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的字符串。但混合这两者将导致数据形成不良。