我想发送一个带有POST的json数组到一个with服务器。一切都很好,除了我的对象的错误contentType 之外。
“每个”循环遍历我的表单,并将一对值添加到两个项中。然后将这两个项添加到数组中,并获取下一对:
var jsonArray = []
$(form).each(function() {
.....
item = {};
item["name1"] = value1;
item["name2"] = value2;
jsonString = JSON.stringify(item);
jsonarray.push(jsonString);
...当我将结果记录到控制台时,一切看起来都很棒。后置方法如下所示:
$.ajax ({
type:"POST",
contentType: 'application/json',
url: siteRoot + "/" + ID + "/path",
data: jsonarray,
...但是我从服务器收到了一条错误消息,它说:
内容类型的标题是"application/ JSON“,但body不是一个可解析的JSON。
我应该使用哪个contentType?如果我查看日志文件,就会得到如下输出:
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...我必须创建一个特殊的JSON对象吗?
发布于 2013-11-27 12:14:54
错误消息是正确的,因为输出不是有效的JSON字符串,而是包含由分号分隔的JSON字符串的字符串。我建议您序列化整个数组,而不是单个项。首先,像这样构建数组:
var itemsArray = []
$(form).each(function() {
...
item = {};
item["name1"] = value1;
item["name2"] = value2;
itemsArray.push(item);
...然后像这样发布:
$.ajax ({
type:"POST",
contentType: 'application/json',
url: siteRoot + "/" + ID + "/path",
data: JSON.stringify(itemsArray),
...如果您查看您的内容,它应该如下所示:
[ {"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"}, ... ]它是有效的JSON,应该反序列化为一个对象数组。
发布于 2013-11-27 12:27:15
问题在于如何将项转换为JSON并添加到数组中。这会导致{}附近的引号。像这样:
["{"name1":"value1","name2":"value2"}"] // Not Valid应该将项添加到数组中,然后将其转换为
[{"name1":"value1","name2":"value2"}] //validhttps://stackoverflow.com/questions/20241990
复制相似问题