Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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
发布字符串化数组时JSON格式错误(Javascript和Ruby)_Javascript_Html_Ruby On Rails_Ruby_Json - Fatal编程技术网

发布字符串化数组时JSON格式错误(Javascript和Ruby)

发布字符串化数组时JSON格式错误(Javascript和Ruby),javascript,html,ruby-on-rails,ruby,json,Javascript,Html,Ruby On Rails,Ruby,Json,我这里有一个非常具体的例子。我基本上是在尝试将字符串数组发布到我的一个ruby服务器上,并将其处理回对象。问题是当我通过Json发送时,结果是这样的 它非常奇怪的语法又回到了服务器上 所以我的问题是我的错误在哪里,我该如何纠正它 1:是我的ruby/rails服务器没有正确解析json吗?(我对此表示怀疑,因为json看起来已经损坏了) 2:这是我构建阵列的方式吗 3:还是(很可能)我发布阵列的方式 所以我只想说得更详细一点。 在javascript的客户端,我有你每天使用的字符串数组。 当我

我这里有一个非常具体的例子。我基本上是在尝试将字符串数组发布到我的一个ruby服务器上,并将其处理回对象。问题是当我通过Json发送时,结果是这样的

它非常奇怪的语法又回到了服务器上

所以我的问题是我的错误在哪里,我该如何纠正它

1:是我的ruby/rails服务器没有正确解析json吗?(我对此表示怀疑,因为json看起来已经损坏了)

2:这是我构建阵列的方式吗

3:还是(很可能)我发布阵列的方式


所以我只想说得更详细一点。 在javascript的客户端,我有你每天使用的字符串数组。 当我运行此命令时:

JAVASCRIPT数组:

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

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes:$arrayToSend},
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });
puts YAML::dump(params[:elementTypes])
@x = (params[:elementTypes])
@elementTypes = JSON.parse(@x)
它产生:

[" Page Title "," Description "," Keywords "," Internal Links "," 
External Links "," Content files "," Notes "]
在我的发布方法之后,如下所列:

JAVASCRIPT帖子:

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

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes:$arrayToSend},
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });
puts YAML::dump(params[:elementTypes])
@x = (params[:elementTypes])
@elementTypes = JSON.parse(@x)
在ruby方面,这是转储参数后出现的结果:

Ruby代码

RUBY:

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

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes:$arrayToSend},
        success:  function(){
            console.log("YIPPEE I HAS A SUCCESS");},
        dataType: 'json'
    });
puts YAML::dump(params[:elementTypes])
@x = (params[:elementTypes])
@elementTypes = JSON.parse(@x)
以及服务器上的打印结果:

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

你是混血儿。不要把任何东西串起来,或者把所有东西串起来。在你的情况下,我将替换:

 $.ajax({

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes: JSON.stringify($arrayToSend)},
        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的字符串。但是混合这两种类型会导致数据格式错误。

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

 $.ajax({

        type: 'POST',
        url: webAppURL+websiteID+".json",
        data:  {elementTypes: JSON.stringify($arrayToSend)},
        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的字符串。但将两者混合会导致数据格式错误。

是的,可能是您发布数组的方式。但在我们判断之前,让我们先看看ruby代码,好吗P@corroded只是一个疯狂的想法。似乎额外的\是onyl在服务器端传入的。这可能是因为我正在创建Json字符串作为数据:并将类型:声明为Json?顺便说一句,我已经按照你的要求重新写了这个问题。是的,也许你是如何发布你的数组的。但在我们判断之前,让我们先看看ruby代码,好吗P@corroded只是一个疯狂的想法。似乎额外的\是onyl在服务器端传入的。这可能是因为我正在创建Json字符串作为数据:并将类型:声明为Json?顺便说一句,我已经按照你的要求重新写了这个问题。我已经重新写了这个问题。我知道我给stringify打了两次电话,但我已经摆脱了this@Overtone一个最初的要求是它作为json字符串传递,所以它在服务器端作为散列返回,但数组也可以。非常感谢,朋友。我已经改写了这个问题。我知道我给stringify打了两次电话,但我已经摆脱了this@Overtone一个最初的要求是它作为json字符串传递,所以它在服务器端作为散列返回,但数组也可以。非常感谢你的朋友。