在javascript中执行curl请求?

时间:2014-08-26 22:06:40

标签: javascript jquery curl

是否可以在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);

我尝试做的是执行此curl请求,该请求返回json,然后我计划使用jQuery' $.get()函数解析它。

3 个答案:

答案 0 :(得分:29)

curl是一个命令(在Linux和PHP中)。 Curl通常会发出HTTP请求。

您真正想要做的是从javascript发出HTTP(或XHR)请求。

使用这个词汇,你会发现一堆例子,对于初学者: Sending authorization headers with jquery and 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
        }
})

答案 1 :(得分:2)

是的,使用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 :(得分:1)

您可以使用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) );