Wykonać curl request w javascript?

Czy możliwe jest wysłanie żądania curl w jQuery lub javascript?

Coś takiego:

curl \
-H 'Authorization: Bearer 6Q************' \
'https://api.wit.ai/message?v=20140826&q='

Więc w PHP po złożeniu formularza, tak:

$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);

Próbuję wykonać to curl request, które zwraca json, a następnie planuję je parsować za pomocą funkcji jQuery $.get().

Author: wordSmith, 2014-08-27

2 answers

Curl jest poleceniem (w Linuksie i PHP). Curl zazwyczaj wysyła żądanie HTTP.

To, co naprawdę chcesz zrobić, to złożyć żądanie HTTP (lub XHR) z javascript.

Używając tego słownictwa znajdziesz kilka przykładów, na początek: wysyłanie nagłówków autoryzacji za pomocą jquery i ajax

Zasadniczo będziesz chciał wywołać {[1] } z kilkoma opcjami nagłówka itp.

$.ajax({
        url: 'https://api.wit.ai/message?v=20140826&q=',
        beforeSend: function(xhr) {
             xhr.setRequestHeader("Authorization", "Bearer 6QXNMEMFHNY4FJ5ELNFMP5KRW52WFXN5")
        }, success: function(data){
            alert(data);
            //process the JSON data etc
        }
})
 24
Author: Amir T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:54

Tak, użyj getJSONP. To jedyny sposób na wykonywanie połączeń asynchronicznych między domenami/serwerami. (*Lub będzie w niedalekiej przyszłości). Coś jak

$.getJSON('your-api-url/validate.php?'+$(this).serialize+'callback=?', function(data){
if(data)console.log(data);
});

Parametr wywołania zwrotnego zostanie wypełniony automatycznie przez przeglądarkę, więc nie martw się.

Po stronie serwera ('validate.php') mielibyście coś takiego

<?php
if(isset($_GET))
{
//if condition is met
echo $_GET['callback'] . '(' . "{'message' : 'success', 'userID':'69', 'serial' : 'XYZ99UAUGDVD&orwhatever'}". ')';
}
else echo json_encode(array('error'=>'failed'));
?>
 1
Author: Pedro Serpa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-02 21:51:21