#javascript #jquery #json #api #youtube
#javascript #jquery #json #API #YouTube
Вопрос:
Я пытаюсь следовать:
<script>
var topic_id = '/m/04136kj';
var service_url = 'https://www.googleapis.com/freebase/v1/topic';
var params = {
filter: "/common/topic/article",
filter:"/common/topic/notable_for",
filter: "/common/topic/notable_types",
filter: "/type/object/type"
};
$.getJSON(service_url topic_id '?callback=?', params, function(topic) {
//do something with response.
});
</script>
Если вы заметили, я должен передать 4 значения для filter
. Но конечный URL-адрес, который я получил от FIDDLER, содержит только последнее значение ( /type/object/type
) Я пробовал только с одним параметром, и он отлично работает (любой параметр), но не с несколькими значениями. Как я могу сформировать правильный параметр?
Редактировать:
Передача массива, подобного приведенному ниже, в первом ответе неправильно кодирует URL. Он добавляется []
после filter
, т.е. он передается filter[]=
в URL, а не filter=
var params = {
filter: ["/common/topic/article", "/common/topic/notable_for",
"/common/topic/notable_types", "/type/object/type"]
};
Ответ №1:
создайте объект фильтра в виде массива
var topic_id = '/m/04136kj';
var service_url = 'https://www.googleapis.com/freebase/v1/topic';
var params = {
filter: ["/common/topic/article", "/common/topic/notable_for", "/common/topic/notable_types", "/type/object/type"]
};
//used to remove the the suffix [] in the array param
$.ajaxSetup({ traditional: true });
$.getJSON(service_url topic_id '?callback=?', params, function (topic) {
//do something with response.
});
Комментарии:
1. Спасибо. Это работает, и я понял логику. Это действительно глупо с моей стороны: D
2. Один маленький вопрос. Url кодируется следующим образом:
https://www.googleapis.com/freebase/v1/topic/m/04136kj?callback=jsonp1403174148707amp;filter[]=/common/topic/article
я замечаю[]
фильтр after. Вы знаете, почему?3. Я подтвердил с помощью fiddler. Он передается
[]
с фильтром, и это вызывает неправильный ответ. Есть идеи?4. Понижение, потому что это не ответ на вопрос из-за встроенного
[]
Ответ №2:
Объект param должен быть создан так, как если бы это был HTML <form>
-объект, в виде серии пар имя / значение.
var topic_id = '/m/04136kj';
var service_url = 'https://www.googleapis.com/freebase/v1/topic';
var filter = ["/common/topic/article", "/common/topic/notable_for",
"/common/topic/notable_types", "/type/object/type"];
var params = filter.map(function(f) { return { name: "filter", value: f }; });
$.getJSON(service_url topic_id '?callback=?', params, function (topic) {
//do something with response.
});