我有一个JS字符串,如下所示:
user_fav = "21,16";
这必须通过一个函数,它变成一个带有id
键的JSON数组,如下所示:
{"id":21},{"id":16}
这会进入$ http请求:
return $http({
method: 'GET',
url: getUrl('products'),
params: {
pageSize: 2000,
pageNumber: 1,
"filter": { "q": { "$or": [{"id":21},{"id":16}] } }, // <-- HERE
sort: []
}
});
现在,如果我运行上面的$http
请求,一切正常,但是如果我将String(user_fav)转换为该JSON并将其发送到$http
请求,则会触发错误。这是我的转换器:
user_fav = "21,16";
var user_fav_to_array = "";
var splitFav = user_fav.split(",");
for (var i = 0; i < splitFav.length; i++) {
user_fav_to_array += JSON.stringify({ id: parseInt(splitFav[i]) }) + ',';
}
var JSONFavs = user_fav_to_array.substring(0, user_fav_to_array.length - 1);
//Result: JSONFavs => {"id":21},{"id":16}
所以这给出了一个错误:
return $http({
method: 'GET',
url: getUrl('products'),
params: {
pageSize: 2000,
pageNumber: 1,
"filter": { "q": { "$or": [JSONFavs] } }, // <-- HERE
sort: []
}
});
Madame and messier错误是417 (Critical Exception)
,这来自Backand.com系统
答案 0 :(得分:1)
看看下面的代码。你的代码实际上做的是将Json STRING分配给$或property。但真正需要的是分配项目数组(如预期的那样)。如果您有任何问题,请告诉我
user_fav = "21,16";
//Dont need this
//var user_fav_to_array = "";
// New Variable to save array items
var arrayData =[];
var splitFav = user_fav.split(",");
for (var i = 0; i < splitFav.length; i++) {
// don't need this
//user_fav_to_array += JSON.stringify({ id: parseInt(splitFav[i]) }) + ',';
// Just create a simple javascript object with id and put it into array at i index
arrayData[i]={ id: parseInt(splitFav[i]) };
}
//var JSONFavs = user_fav_to_array.substring(0, user_fav_to_array.length - 1);
// Then in Http Request filter, it should be just like this "$or": arrayData
"filter": { "q": { "$or": arrayData } }
答案 1 :(得分:0)
这可能需要处理你的变量 - var user_fav_to_array =“”;
您可能希望将其更改为以下var user_fav_to_array = [];
由于它有引号,因此可能导致变量以您不希望的方式运行。除非字符串在javascript中被视为数组。