2017-03-22 93 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給出的原始代碼的一部分。 –