如果数据很大,则jQuery ajax不会在POST中发送完整数据

时间:2018-07-05 13:30:38

标签: javascript jquery ajax post electron

在我的应用程序中,我正在使用jquery $ .ajax函数调用POST类型的API。当数据很大时,它将截断部分数据。但是,当我使用POSTMAN发送相同的数据时,它可以正常工作,并且服务器正在获取完整的请求。仅当我使用Jquery在javascript中调用API时,问题才会出现。我的应用程序是在Electron中构建的。下面是API调用的代码:

$.ajax({
                async: false,
                type: "POST",
                url: 'API_URL_HERE',
                headers: {
                    'Accept': 'application/json',
                    'Authorization': authToken,
                },
                data: {
                    var1: "123456789",
                    var2: 10,
                    var3: {
                        'var3_data': array_containing_strings,
                        'var3_version': 20
                    },
                    var4: 80,
                    var5: "123456789"
                },
                success: function (data) {
                        // Some operation here
                },
                error: function (xhr, ajaxOptions, thrownError) {
                        // Some operation here
                }
});

我已经重命名了变量名。问题出在 array_ contains_strings 变量中。它是一个包含字符串的数组。如果array_ contains_strings包含太多字符串,则服务器未接收到 var4 var5 变量。我尝试使用长度为13000的数组,而数组的每个元素都是长度为400个字符的字符串(所以大小= 13000 * 400 = 5200000)。奇怪的是,发送到服务器的数据是有效的JSON格式,请求中仅缺少变量。另一个奇怪的事情是,当我在开发人员控制台中打开“网络”选项卡时,它正在网络调用中显示完整数据,唯一的服务器没有收到它。服务器配置似乎也不是问题,因为使用Postman时使用相同数据的相同API调用可以正常工作。

1 个答案:

答案 0 :(得分:1)

  

向您添加 dataType:'json' contentType:'application / json'   ajax请求。

$.ajax({
                    async: false,
                    type: "POST",
                    url: 'API_URL_HERE',
                    headers: {
                        'Accept': 'application/json',
                        'Authorization': authToken,
                    },
                    dataType:'json',
                    contentType:'application/json'
                    data: {
                        var1: "123456789",
                        var2: 10,
                        var3: {
                            'var3_data': array_containing_strings,
                            'var3_version': 20
                        },
                        var4: 80,
                        var5: "123456789"
                    },
                    success: function (data) {
                            // Some operation here
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                            // Some operation here
                    }
    });