javascript - 如果数据很大,JQuery ajax 不会在 POST 中发送完整数据

标签 javascript jquery ajax post electron

在我的应用程序中,我使用 jquery $.ajax 函数调用 POST 类型的 API。当数据很大时,它会 chop 部分数据。但是当我使用 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_containing_strings 变量中。它是一个包含字符串的数组。当 array_containing_strings 包含如此多的字符串时,服务器不会接收 var4var5 变量。我尝试使用长度为 13000 的数组,而数组的每个元素都是长度为 400 个字符的字符串(因此大小 = 13000 * 400 = 5200000)。奇怪的是,发送到服务器的数据是有效的 JSON 格式,仅请求中缺少变量。一件更奇怪的事情是,当我在开发人员控制台中打开网络选项卡时,它显示网络调用中的完整数据,唯一的服务器没有接收它。服务器配置似乎也不是问题,因为使用 Postman 时使用相同数据的相同 API 调用工作正常。

最佳答案

add dataType:'json' and contentType:'application/json' to yuor ajax request.

$.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
                    }
    });

关于javascript - 如果数据很大,JQuery ajax 不会在 POST 中发送完整数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51192649/

相关文章:

Javascript 面向对象的语法引用

javascript - 什么是 0;在javascript中的意思

javascript - 无法读取未定义的属性 'router'并且ko未在knockout JS中定义

jquery - 如何使用 jquery 按钮单击呈现特定页面模板

下拉列表值更改时 PHP 更新文本框

javascript - IE11 JQuery 错误?

javascript - JQuery:如何触发两个动画?

javascript - 如何使用连接Servlet的jQuery AJAX更改JSP页面内容?

javascript - 如何通过 Ajax 和 PHP 传递表单

c# - 单击链接按钮时显示面板