Возможность 1
У вас нет доступа к их API. Согласно их API page, они очень избирательно относятся к тому, кому они предоставляют доступ к их API.
Мы выбираем наши партнеры по API и одобряем использование, а также разрабатываем условия на индивидуальной основе. Если вы заинтересованы в использовании нашего API, свяжитесь с нами напрямую [...].
Возможность 2
Вы блокировано same origin policy. Браузеры, как правило, очень строгие в отношении запросов, сделанных JavaScript в разных доменах. Это можно обойти, используя Cross-origin resource sharing. Это требует настройки сервера, который вы запрашиваете, поэтому в этом случае он не является жизнеспособным.
Лучше всего создать серверный скрипт, который запрашивает URL-адрес, а затем с помощью AJAX запросить файл.
Пример в PHP, давайте назовем это request_dictionary.php
:
<?php
$vid = "Your API key";
$type = $_GET['type'];
$site = $_GET['dictionary'];
$request_url = "http://api-pub.dictionary.com/v001?vid=$vid&type=$type&site=$site";
echo file_get_contents($request_url);
?>
Примечания: Вы, вероятно, нужно изменить в соответствии с вашими потребностями (обработка ошибок, ошибки 404, кэширование и т.д.). Этот код не проверен.
Затем измените свой jQuery так, чтобы он запрашивал ваш файл.
$("#btnGetData").click(function() {
$.ajax({
url: "/request_dictionary.php",
type: "GET",
data: "type=random&site=dictionary",
success: function() { alert("success") },
});
});
Предупреждение
Использование вызова AJAX без прокси-сервера (как описано в возможности 2) выставит свой ключ API. Это против Dictionary.com's API Terms of Service.
2.1 Dictionary.com назначит и предоставит вашему клиентскому приложению ключ приложения для доступа к API. Все вызовы должны содержать .Ключ приложения уникален , связанный с каждым клиентским приложением и всеми версиями, обновлениями и их обновлениями. Ключ приложения - это конфиденциальная информация , как определено в настоящих Условиях использования. Вы должны поддерживать и хранить Ключ приложения в надежном, встроенном виде, недоступном любому третьему лицу . Ключ приложения полностью может быть отменен Dictionary.com в любое время. Dictionary.com может блокировать попытки доступа к API с недействительным или отмененным Ключом приложения.
Я обновил код в возможность 2 скрыть ключ API, сохраняя его в файле PHP.
Update/Примечание: Просто проходя dataType: 'jsonp'
для того, чтобы кросс-происхождения вызовов недостаточно. Ответному серверу необходимо ответить заголовком Access-Control-Allow-Origin
, содержащим ваш домен (или правило, которое включает ваш домен). Любая конфигурация такого типа находится вне вашей руки в качестве реквестера.
Обновление/Примечание 2: Изучив возвращенные заголовки с вашего URL-адреса, я не вижу признаков Access-Control-Allow-Origin
. Это означает, что даже если у вас есть доступ к их API, вы не сможете получить к нему доступ с помощью AJAX. Полные заголовки ниже:
GET /v001?vid=%3CVID%3E&type=random&site=dictionary HTTP/1.1[CRLF]
Host: api-pub.dictionary.com[CRLF]
Connection: close[CRLF]
User-Agent: Web-sniffer/1.0.44 (+http://web-sniffer.net/)[CRLF]
Accept-Encoding: gzip[CRLF]
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[CRLF]
Accept-Language: en-US,en;q=0.8[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
Cache-Control: no-cache[CRLF]
Referer: http://web-sniffer.net/[CRLF]
Вы введете код "" в свой код? Является ли ваш VID действительным? Пробовали ли вы отправлять точный URL-адрес в параметре 'url' (вместо записи строки запроса в параметре' data')? –
Marc
Вы проверили сетевого инспектора, чтобы узнать, какой код ошибки HTTP вы получаете? Установить обратный вызов ошибки? Поскольку вы можете просто ввести его в поле URL. -1 для вопроса без сообщений об ошибках, я удалю его, когда вы добавите эту информацию, эй, вы, вероятно, ответите на свой вопрос после того, как посмотрите на эти вещи. –
. Вы пытаетесь использовать инструмент «Слово дня»? , или это для чего-то еще? –