在我的应用程序中,我正在使用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调用可以正常工作。
答案 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
}
});