0

Выполнение curl-запроса на JavaScript?

2

Является ли возможным выполнить запрос 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 ответ(ов)

0

Да, используйте 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-запрос и обработать его на серверной стороне.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь