我正在制作API服务以将数据发送到我的API端点,但我遇到了一些麻烦。
FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
我正在使用Ajax和jQuery将一个整数数组发送到我的端点,但是如果我检查进入我的端点的数据,它将返回:function getStockLevel(articleCodes) {
var ajaxCallData = [], stockLevels = [];
articleCodes.forEach(function(articleCode) {
if (isLocalStorageSupported() === true) {
if (localStorage.getItem(articleCode) === null) {
ajaxCallData.push(articleCode);
} else {
var localData = JSON.parse(localStorage.getItem(articleCode));
if ((Date.now() / 1000) >= localData['timestamp']) {
ajaxCallData.push(articleCode);
} else {
stockLevels[articleCode] = localData['stock'];
}
}
} else {
ajaxCallData.push(articleCode);
}
});
if (typeof ajaxCallData !== 'undefined' && ajaxCallData.length > 0) {
var article_codes = JSON.stringify(ajaxCallData);
$.ajax({
url : url,
dataType : 'json',
type : 'POST',
contentType : 'application/json',
data : {
article_codes : article_codes
},
success : function(result) {
console.log(result);
for (var code in result) {
if (result.hasOwnProperty(code)) {
var stockLevel = result[code];
stockLevels[code] = stockLevel;
if (isLocalStorageSupported() === true) {
var localStorageData = [];
localStorageData['stock'] = stockLevel;
localStorageData['timestamp'] = (Date.now() / 1000) + 120;
localStorage.setItem(code, JSON.stringify(localStorageData))
}
}
}
}
});
}
}
var codes = [40200, 40201];
var result = getStockLevel(codes);
而不是我期望的json。
如果我将ajaxCallData直接传递给ajax调用的data属性,我会得到相同的结果,除非两个值具有相同的键,如下所示:
article_codes=%5B40200%2C40201%5D
任何帮助都将不胜感激。
答案 0 :(得分:0)
data : ajaxCallData
尝试像这样传递它。
ajaxCallData已经是一个将articles_codes设置为键的对象。 你根本不需要JSON.stringify它。
答案 1 :(得分:0)
我找到了解决方案。
实际上,巴尔塔萨尔非常接近。 我需要像数据一样设置数据:article_codes我现在在端点控制器中获取正确的数据。
感谢大家的帮助!