通过jQuery POST发送JSON文件,内容类型错误

通过jQuery POST发送JSON文件,内容类型错误,jquery,json,Jquery,Json,我想将带有POST的json数组发送到Web服务器。一切正常,除了对象的内容类型错误之外 “each”循环遍历我的表单,并向两个项添加一对值。然后将这两个项添加到数组中,并获得下一对: var jsonArray = [] $(form).each(function() { ..... item = {}; item["name1"] = value1; item["name2"] = value2; jsonString =

我想将带有POST的json数组发送到Web服务器。一切正常,除了对象的内容类型错误之外

“each”循环遍历我的表单,并向两个项添加一对值。然后将这两个项添加到数组中,并获得下一对:

var jsonArray = []

$(form).each(function() {
.....
        item = {};
        item["name1"] = value1;
        item["name2"] = value2;


        jsonString = JSON.stringify(item);

        jsonarray.push(jsonString); 
...
当我将结果记录到控制台时,一切看起来都很好。POST方法如下所示:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
但是我从服务器收到一条错误消息,它说:

内容类型头是“application/json”,但主体不是可解析的json

我应该使用哪种内容类型?如果我查看日志文件,会得到如下输出:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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对象吗?

错误消息是正确的,因为您的输出不是一个有效的JSON字符串,而是一个包含用分号分隔的JSON字符串的字符串。我建议您序列化整个数组,而不是单个项。首先按如下方式构建阵列:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
然后像这样发布:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
如果您查看您的内容,它应该如下所示:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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,应该反序列化为对象数组。

错误消息是正确的,因为您的输出不是有效的JSON字符串,而是包含以分号分隔的JSON字符串的字符串。我建议您序列化整个数组,而不是单个项。首先按如下方式构建阵列:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
然后像这样发布:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
如果您查看您的内容,它应该如下所示:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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,应该反序列化为对象数组。

错误消息是正确的,因为您的输出不是有效的JSON字符串,而是包含以分号分隔的JSON字符串的字符串。我建议您序列化整个数组,而不是单个项。首先按如下方式构建阵列:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
然后像这样发布:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
如果您查看您的内容,它应该如下所示:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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,应该反序列化为对象数组。

错误消息是正确的,因为您的输出不是有效的JSON字符串,而是包含以分号分隔的JSON字符串的字符串。我建议您序列化整个数组,而不是单个项。首先按如下方式构建阵列:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
然后像这样发布:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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"}, ... ]
如果您查看您的内容,它应该如下所示:

$.ajax ({
        type:"POST",
        contentType: 'application/json',
        url: siteRoot + "/" + ID + "/path",
        data: jsonarray,

...
{"name1":"value1", "name2":"value2"}, {"name1":"value1", "name2":"value2"},...
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,应该反序列化为对象数组。

问题在于将项转换为JSON并添加到数组中。这会导致{}周围出现引号。 比如:

您应该将项添加到数组中,然后将其转换

[{"name1":"value1","name2":"value2"}] //valid

问题在于将项转换为JSON并添加到数组中。这会导致{}周围出现引号。 比如:

您应该将项添加到数组中,然后将其转换

[{"name1":"value1","name2":"value2"}] //valid

问题在于将项转换为JSON并添加到数组中。这会导致{}周围出现引号。 比如:

您应该将项添加到数组中,然后将其转换

[{"name1":"value1","name2":"value2"}] //valid

问题在于将项转换为JSON并添加到数组中。这会导致{}周围出现引号。 比如:

您应该将项添加到数组中,然后将其转换

[{"name1":"value1","name2":"value2"}] //valid

非常感谢!但是没有,我收到了这个错误消息:没有找到真正的数据媒体类型“application/json”和预期的数据媒体类型“text/plain”的验证器。是服务器/API还是我在代码中遇到的另一个问题?@2DD8847很可能是服务器端错误,但无法确定,因为您在问题中没有指定任何关于服务器端机制的内容,只有客户端。提供了服务器,我无法访问该服务器。@2DD8847在这种情况下,我无法为您提供更多帮助,上面的答案可以让你发送正确的JSON,为什么服务器不处理它恐怕超出了这个问题的范围。非常感谢!但是没有,我收到了这个错误消息:没有找到真正的数据媒体类型“application/json”和预期的数据媒体类型“text/plain”的验证器。是服务器/API还是我在代码中遇到的另一个问题?@2DD8847很可能是服务器端错误,但无法确定,因为您在问题中没有指定任何关于服务器端机制的内容,只有客户端。提供了服务器,我无法访问该服务器。@2DD8847在这种情况下,我无法为您提供更多帮助,上面的答案可以让你发送正确的JSON,为什么服务器不处理它恐怕超出了这个问题的范围。非常感谢!但是没有,我收到了这个错误消息:没有找到真正的数据媒体类型“application/json”和预期的数据媒体类型“text/plain”的验证器。是服务器/API还是我在代码中遇到的另一个问题?@2DD8847很可能是服务器端错误,但无法确定,因为您在问题中没有指定任何关于服务器端机制的内容,只有客户端。提供了服务器,我无法访问该服务器。@2DD8847在这种情况下,我无法为您提供更多帮助,上面的答案可以让你发送正确的JSON,为什么服务器不处理它恐怕超出了这个问题的范围。非常感谢!但是没有,我收到了这个错误消息:没有找到真正的数据媒体类型“application/json”和预期的数据媒体类型“text/plain”的验证器。是服务器/API还是我在代码中遇到的另一个问题?@2DD8847很可能是服务器端错误,但无法确定,因为您在问题中没有指定任何关于服务器端机制的内容,只有客户端。提供了服务器,我无法访问该服务器。@2DD8847在这种情况下,我无法为您提供更多帮助,上面的答案允许您发送正确的JSON,恐怕服务器不处理它的原因超出了这个问题的范围。