在POST的JavaScript请求中发送Json数组

时间:2016-05-31 11:00:01

标签: javascript json ajax post

我在AJAX调用中发送JSON数组时遇到了麻烦。以下是我的代码

var company_name = $('input#company_name').val();
var company_localname = $('input#company_localname').val();
var companytype = $('#companytype').val();

if (companytype == 'retailer') {
    var bank_name = $('input#bank_name').val();
    var account_title = $('input#account_title').val();
    var business_nature = $('input#business_nature').val();
    var gross_sales = $('input#gross_sales').val();
}

获取所有值后,我将数据存储在Json中,如下所示

var jsonArray = [];
jsonArray["company_name"] = company_name;
jsonArray["company_localname "] = company_localname;

if (companytype == 'retailer') {
    jsonArray["bank_name"] = bank_name;
    jsonArray["account_title"] = account_title;
    jsonArray["business_nature"] = business_nature;
    jsonArray["gross_sales"] = gross_sales;
}

现在在Ajax调用中发送jsonArray

$.ajax({
    url : url,
    type : "POST",
    dataType : 'json',
    contentType : 'application/json; charset=UTF-8',
    data : JSON.stringify(jsonArray),
    success : function(response) {
        //Some Code here
    }
});

请帮我发送数据。或者告诉我,我是否在这里犯了任何错误。谢谢

3 个答案:

答案 0 :(得分:3)

在JavaScript / JSON数组中,基于0的索引数据结构。你在这里使用的更像是地图:

var jsonArray = [];
jsonArray["company_name"]=company_name ;

在JavaScript中你不能使用这样的数组(你可以,但它可能不是你想要的)。对于像地图一样将字符串映射到对象而不是对象的索引的数据结构,只需使用对象。

或简而言之:使用var jsonArray = {};而不是var jsonArray = []; {}将创建一个对象,您可以按照自己的方式分配属性。 JSON.stringify会正确地将其转换为JSON字符串,如下所示:

{ "property": value, "otherProperty", otherValue }

答案 1 :(得分:0)

做这样的事情。

$.ajax({
        url: url,
        type: "POST",
        dataType: 'json',
        contentType: 'application/json; charset=UTF-8', 
        data: JSON.parse(JSON.stringify(jsonArray)),
        success: function(response) {
           //Some Code here
     }
    });

答案 2 :(得分:0)

JSON.parse()方法将字符串解析为JSON,可选地转换解析产生的值。 Read more about JSON.parse() method

JSON.stringify()方法将JavaScript值转换为JSON字符串。 Read more about JSON.stringify() method

这里只需发送一个数组并在服务器端解析它。

$.ajax({
    url : url,
    type : "POST",
    dataType : 'json',
    data : jsonArray,
    success : function(response) {
        //Some Code here
    }
});