web-dev-qa-db-ja.com

JavaScriptでカールリクエストを実行しますか?

JQueryまたはjavascriptでcurlリクエストを送信することはできますか?

このようなもの:

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

私がやろうとしているのは、jsonを返すこのcurlリクエストを実行し、jQueryの$.get()関数で解析することです。

29
wordSmith

curlはコマンドです(Linuxの場合)。 Curlは通常、HTTPリクエストを作成します。

本当にやりたいことは、javascriptからHTTP(またはXHR)要求を行うことです。

このボキャブラリを使用すると、初心者向けの多数の例が見つかります。 jqueryとajaxを使用して認証ヘッダーを送信する

基本的に、ヘッダーなどのいくつかのオプションを指定して$.ajaxを呼び出します。

$.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
        }
})
31
Amir T

はい、getJSONPを使用します。クロスドメイン/サーバーの非同期呼び出しを行う唯一の方法です。 (*または近い将来になります)。何かのようなもの

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

コールバックパラメータはブラウザによって自動的に入力されるため、心配する必要はありません。

サーバー側( 'validate.php')には次のようなものがあります

<?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'));
?>
2
Pedro Serpa

JavaScript Fetch API (ブラウザで利用可能)を使用して、ネットワークリクエストを作成できます。

ノードを使用する場合、 node-fetch パッケージをインストールする必要があります。

const url = "https://api.wit.ai/message?v=20140826&q=";

const options = {
  headers: {
    Authorization: "Bearer 6Q************"
  }
};

fetch(url, options)
  .then( res => res.json() )
  .then( data => console.log(data) );
0
JSON C11