Я пытаюсь преобразовать curl-код из API под названием TextRazor в jQuery jQuery из-за ограничений платформы. Я пробовал много решений от подобных вопросов со стороны сообщества, но, похоже, не может вернуть данные (через диалоговое окно предупреждения). Если это имеет значение из документации, вызывающей API, выглядит так:
curl -X POST \ -H "x-textrazor-key: YOUR_API_KEY" \ -d "extractors=entities,entailments" \ -d "text=Spain's stricken Bankia expects to sell off..." \ https://api.textrazor.com/
Текущий код AJAX выглядит следующим образом:
$.ajax({ url: "https://api.textrazor.com/", type: "POST", dataType: 'json', data: { x-textrazor-key: "YOUR_API_KEY", extractors: "entities,entailments", text:"Spain's stricken Bankia expects to sell..." }, success:function(data) { alert(JSON.stringify(data)); },error: function(xhr) { alert("<some error>"); console.error(xhr.responseText); }});
вот ссылка на jsfiddle, если это помогает: jsfiddle.net
Спасибо за поддержку!
Я думаю, вам нужно передать «x-textrazor-key: YOUR_API_KEY» в качестве дополнительного заголовка
$.ajax({ url: "https://api.textrazor.com/", type: "POST", dataType: 'json', beforeSend: function(xhr){xhr.setRequestHeader('x-textrazor-key', 'YOUR_API_KEY');}, data: { extractors: "entities,entailments", text:"Spain's stricken Bankia expects to sell..." }, success:function(data) { alert(JSON.stringify(data)); },error: function(xhr) { alert("<some error>"); console.error(xhr.responseText); }});
data: { x-textrazor-key: "YOUR_API_KEY",
Данные: скобка в jQuery означает, что вы хотите отправить эти данные как POST, в то время как вам нужно отправить ключ API в качестве заголовка.
Добавьте это поле в свой код (после URL-адреса или около того):
headers: {"x-textrazor-key": "YOUR_API_KEY"}
Это выглядит близко ко мне, но вы помещаете заголовок в тело POST. Я думаю, что это должно быть ниже. (Обратите внимание, что вам также нужны кавычки вокруг «x-textrazor-key», поскольку тире в нем иначе интерпретируются как вычитание.)
$.ajax({ url: "https://api.textrazor.com/", type: "POST", dataType: 'json', headers: { 'x-textrazor-key': "YOUR_API_KEY" }, data: { extractors: "entities,entailments", text: "Spain's stricken Bankia expects to sell..." }, success: function (data) { alert(JSON.stringify(data)); }, error: function (xhr) { alert("<some error>"); console.error(xhr.responseText); } });
Конечно, здесь могут быть и другие проблемы. (Например, возможно, API не поддерживает запросы с кросс-началом.) Вам нужно взглянуть на вкладку сети в инструментах разработчика вашего браузера, чтобы узнать, что на самом деле происходит.