在Javascript中发布数组

时间:2017-06-05 06:20:51

标签: javascript c# razor

首先,我想在发布之前感谢堆栈溢出。这是场景。我想在javascript中发布数组[[“a”,“b”],[“c”,“d”]]。并将数据返回为[[“a”,“b”],[“c”,“d”]]。但我得到了这些值 - “[[\”a \“,\”b \“],[\”c \“,\”d \“]]”

提前致谢。

var arraylist = [[“a”,“b”],[“c”,“d”]];

$.ajax({
async: true,
type: "POST",
url: "/TestReciever.cshtml",
data: JSON.stringify(arraylist),
success: function (data) {
    alert(data);
    }            
});

我的TestReciever.cshtml代码是:

string input;
using (var reader = new StreamReader(Request.InputStream)){
input = reader.ReadToEnd();
}
var j = Json.Encode(input);
Response.Write(j);

2 个答案:

答案 0 :(得分:1)

在您的代码中

string input;
using (var reader = new StreamReader(Request.InputStream)){
input = reader.ReadToEnd();
}
// Your are encoding the JSON data to STRING 
   var j = Json.Encode(input);  // Its like doing JSON.stringify in JS
   Response.Write(j);

此行var j = Json.Encode(input);正在将您的JSON转换为字符串。它在你的代码中做的是,因为你的JSON在其结构中由双引号组成。所以,它基本上逃脱了它们。例如从[["a","b"],["c","d"]]"[[\"a\",\"b\"],[\"c\",\"d\"]]";

在javascript中,您需要JSON.parse(YOUR_RESPONSE)将数据作为数组读取。

$.ajax({
async: true,
type: "POST",
url: "/TestReciever.cshtml",
data: JSON.stringify(arraylist),
success: function (data) {
       var your_array = JSON.parse(data); //This will parse your string to ARRAY
       /* NOW USE YOUR ARRAY HERE AS A NORMAL ARRAY*/
    }            
});

有关JSON.parse

的更多信息
  

JSON.parse()方法解析JSON字符串,构造   字符串描述的JavaScript值或对象。可选的   可以提供reviver功能来执行转换   在返回之前生成的对象。

如果您对数组可以是JSON感到困惑,那么这是一个很棒的answer.

答案 1 :(得分:1)

看起来你的问题出在cs-code中,而不是javascript。行var j = Json.Encode(input);将对来自您站点的已经json编码的字符串进行json编码。如果你只是返回输入,你应该得到正确的json。