2017-03-22 95 views
1

我有一个JS字符串,像这样:

user_fav = "21,16"; 

这一直走通,它成为一个JSON阵列与id键,像这样一个功能:

{"id":21},{"id":16} 

这进入一个$ http请求:如果我运行上面$http

return $http({ 
    method: 'GET', 
    url: getUrl('products'), 
    params: { 
     pageSize: 2000, 
     pageNumber: 1, 
     "filter": { "q": { "$or": [{"id":21},{"id":16}] } }, // <-- HERE 
     sort: [] 
    } 
}); 

现在请求一切工作正常,但如果我将字符串(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: [] 
    } 
}); 

夫人和Messier误差为417 (Critical Exception),这是从Backand.com SYSTE

+0

而错误是...? – driconmax

+0

Madame和messier的错误是'417(严重例外)',这是来自Backand.com系统 –

+0

所以这意味着服务器不希望你发送JSON。不知道这里有什么问题,你知道如何正确地做到这一点。 – dfsq

回答

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 } } 
+0

好人! :))))) –

0

这可能要来了处理你的变量 - var user_fav_to_array =“”;
您可能想将其更改为以下var user_fav_to_array = [];

由于它有引号,它可能会导致您的变量行为方式,你不希望它。除非在JavaScript中将字符串视为数组。

+0

不幸的是,表现方式与 –

+0

>相同。<抱歉回答。也是JSONFavs只是一个字符串变量。你为什么把它放在方括号内? – ElementCR

+0

好的。那么,方括号是他们在Backand.com给出的原始代码的一部分。 –