JSON.stringify没有正确的json

时间:2018-06-01 10:03:32

标签: javascript jquery ajax

我正在制作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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

data : ajaxCallData

尝试像这样传递它。

ajaxCallData已经是一个将articles_codes设置为键的对象。 你根本不需要JSON.stringify它。

答案 1 :(得分:0)

我找到了解决方案。

实际上,巴尔塔萨尔非常接近。 我需要像数据一样设置数据:article_codes

我现在在端点控制器中获取正确的数据。

感谢大家的帮助!