我正在开展一个学校项目,我正试图为纽约时报的文章搜索API创建搜索功能。 我的搜索过滤器之一有问题,因为当我运行该函数时我得到错误400因为某些原因它无法读取url编码。有趣的是,如果我用=和%26替换所有%3D&#;在我自己的URL中它可以工作,我可以看到API正确响应。
if($('#date1').is(':checked')) {date="day_of_week&begin_date=18500101&end_date=19000101";}
if($('#date2').is(':checked')) {date="day_of_week&begin_date=19000101&end_date=19500101";}
if($('#date3').is(':checked')) {date="day_of_week&begin_date=19500101&end_date=20000101";}
if($('#date4').is(':checked')) {date="day_of_week&begin_date=20000101&end_date=20150101";}
$.getJSON('http://api.nytimes.com/svc/search/v2/articlesearch.json',
{'api-key': 'XXXXXXXXXXXXXXXXXXXXXXX',
'fq': 'headline:("'+sogestreng.toLowerCase()+'")'+" AND "+finalSections,
'facet_field': date},
如果我手动替换url编码的最后一部分并在浏览器中打开它,我会得到我正在寻找的结果。
我这样做是通过改变:
"&安培; facet_field = DAY_OF_WEEK%26begin_date%3D20000101%26end_date%3D20150101"
到
"&安培; facet_field = DAY_OF_WEEK&安培; BEGIN_DATE = 20000101&安培; END_DATE = 20150101"
另外澄清一下," fq"标准工作得非常好,它只是facet_field。
这怎么可能?它有什么问题吗?
答案 0 :(得分:0)
您将多个字段的描述推送到一个字段的值中。要获得所需的结果,请尝试:
var begin_date, end_date;
if($('#date1').is(':checked')) {
begin_date = 18500101;
end_date = 19000101;
}
else if($('#date2').is(':checked')) {
// etc.
}
$.getJSON('http://api.nytimes.com/svc/search/v2/articlesearch.json',
{
'api-key': 'XXXXXXXXXXXXXXXXXXXXXXX',
'fq': 'headline:("'+sogestreng.toLowerCase()+'")'+" AND "+finalSections,
'facet_field': 'day_of_week',
'begin_date': begin_date,
'end_date': end_date
},
// ...