首先,我想在发布之前感谢堆栈溢出。这是场景。我想在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);
答案 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字符串,构造 字符串描述的JavaScript值或对象。可选的 可以提供reviver功能来执行转换 在返回之前生成的对象。
如果您对数组可以是JSON感到困惑,那么这是一个很棒的answer.
答案 1 :(得分:1)
看起来你的问题出在cs-code中,而不是javascript。行var j = Json.Encode(input);
将对来自您站点的已经json编码的字符串进行json编码。如果你只是返回输入,你应该得到正确的json。