Выполнение curl-запроса на JavaScript?
Является ли возможным выполнить запрос curl с помощью jQuery или JavaScript?
Мне нужно сделать что-то похожее на следующий запрос:
curl \
-H 'Authorization: Bearer 6Q************' \
'https://api.wit.ai/message?v=20140826&q='
В PHP, при отправке формы, это можно сделать следующим образом:
$header = array('Authorization: Bearer 6Q************');
$ch = curl_init("https://api.wit.ai/message?q=".urlEncode($_GET['input']));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);
curl_close($ch);
Я пытаюсь выполнить этот запрос curl, который возвращает JSON, а затем планирую обработать его с помощью функции $.get()
в jQuery. Как это можно реализовать в JavaScript?
1 ответ(ов)
Да, используйте getJSONP
. Это единственный способ выполнять асинхронные запросы между разными доменами/серверами (или это будет так в ближайшем будущем). Пример кода может выглядеть так:
$.getJSON('your-api-url/validate.php?' + $(this).serialize() + '&callback=?', function(data) {
if (data) console.log(data);
});
Параметр callback
будет автоматически заполнен браузером, так что не переживайте по этому поводу.
На стороне сервера (validate.php
) у вас может быть что-то вроде этого:
<?php
if (isset($_GET)) {
// если условие выполнено
echo $_GET['callback'] . '(' . "{'message' : 'success', 'userID':'69', 'serial' : 'XYZ99UAUGDVD&orwhatever'}" . ')';
} else {
echo json_encode(array('error' => 'failed'));
}
?>
Этот код иллюстрирует, как настроить JSONP-запрос и обработать его на серверной стороне.
Как перенаправить на другую веб-страницу?
Прокрутка к элементу с использованием jQuery
Как определить нажатие клавиши Esc?
Удалить ВСЕ пробелы из текста
Как получить данные формы с помощью JavaScript/jQuery?