javascript - 如果数据很大,JQuery ajax 不会在 POST 中发送完整数据
问题描述
在我的应用程序中,我使用 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 调用工作正常。
解决方案
将 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
}
});
推荐阅读
- python - 如何在列表python中乘以真/假
- simulation - 如何在 AnyLogic 中动态改变静态资源的容量
- html - CSS:为什么转换:比例不适用于 justify-content:space-around?
- javascript - 使用 rn-fetch-blob 将图像复制到本地存储
- zephyr-rtos - ZephyrOS:如何将驱动程序模块添加到树外项目
- node.js - SenderGrid 发件人身份验证
- assembly - 如何在 gcc 中完成编译时计算/数学运算?
- r - 合并 R 列中的两个数据框并按一个值对列进行排序
- ansible - Ansible 创建用户和组
- node.js - 在本地运行多个 laravel-echo-server 实例