我正在使用Parse创建一个httpRequest,我想要做的是让请求的一个方面采用locationSearch
变量的值。当我尝试执行此操作时,如下所示,我收到错误说明以下内容:
Deploy failed with error:Uncaught SyntaxError: Unexpected token : in main.js:322
它引用的第322行是:
'keywords' : results[i].get('searchTerm'),
这意味着在该行之前插入locationSearch
会将其抛弃,因为它需要一个键值对。 locationSearch
变量是两个可能的键值对之一,因此我不知道如何格式化请求。
我考虑使用某种if语句,但我不知道如何以不会抛弃请求的方式格式化语法。有什么方法可以做到这一点吗?
代码:
for (i=0; i<results.length; i++) {
// ... later in your loop where you populate promises:
var searchTerm = results[i].get('searchTerm');
// add it to the array just like you add the promises:
searchTerms.push(searchTerm);
url = 'http://svcs.ebay.com/services/search/FindingService/v1';
//push function containing criteria for every matchCenterItem into promises array
promises.push((function() {
locationSearch = results[i].get('itemLocation')
var httpRequestPromise = Parse.Cloud.httpRequest({
url: url,
params: {
'OPERATION-NAME' : 'findItemsByKeywords',
'SERVICE-VERSION' : '1.12.0',
'SECURITY-APPNAME' : '*APP ID GOES HERE*',
'GLOBAL-ID' : 'EBAY-US',
'RESPONSE-DATA-FORMAT' : 'JSON',
'REST-PAYLOAD&sortOrder' : 'BestMatch',
'paginationInput.entriesPerPage' : '3',
'outputSelector=AspectHistogram&itemFilter(0).name=Condition&itemFilter(0).value(0)' : 'New',
'itemFilter(0).value(1)' : results[i].get('itemCondition'),
'itemFilter(1).name=MaxPrice&itemFilter(1).value' : results[i].get('maxPrice'),
'itemFilter(1).paramName=Currency&itemFilter(1).paramValue' : 'USD',
'itemFilter(2).name=MinPrice&itemFilter(2).value' : results[i].get('minPrice'),
'itemFilter(2).paramName=Currency&itemFilter(2).paramValue' : 'USD',
locationSearch,
'keywords' : results[i].get('searchTerm'),
}
});
return httpRequestPromise
})());
}
答案 0 :(得分:3)
问题是之前的行(locationSearch,
)
'itemFilter(2).paramName=Currency&itemFilter(2).paramValue' : 'USD',
locationSearch,
'keywords' : results[i].get('searchTerm'),
这不是有效的语法。它必须是这样的:
'locationSearch': locationSearch,
或该属性/字段的适当名称。
此外,在以下行中,删除尾随的逗号(','),因为这是另一个语法错误。
'keywords' : results[i].get('searchTerm'),