Javascript 如何在Ajax中调用curl cmd

Javascript 如何在Ajax中调用curl cmd,javascript,php,jquery,ajax,curl,Javascript,Php,Jquery,Ajax,Curl,这是我的curl命令,是否可以使用ajax执行该命令 curl -X POST -u "CONVERSATION_USERNAME":"CONVERSATION_PASSWORD" -H "Content-Type:application/json" -d "{\"input\": {\"text\":\" \"}}" "https://gateway.watsonplatform.net/conversation/api/v1/workspaces/CONVERSATION_ID/messag

这是我的curl命令,是否可以使用ajax执行该命令

curl -X POST -u "CONVERSATION_USERNAME":"CONVERSATION_PASSWORD" -H "Content-Type:application/json" -d "{\"input\": {\"text\":\" \"}}" "https://gateway.watsonplatform.net/conversation/api/v1/workspaces/CONVERSATION_ID/message?version=2016-07-11"

创建一个php文件,将该命令放在该文件中,从该文件返回curl响应中需要的任何内容,并通过ajax调用该php文件

文件ajax\u curl.php

<?php
    //do your curl call here
    //curl -X POST -u "CONVERSATION_USERNAME":"CONVERSATION_PASSWORD" -H "Content-Type:application/json" -d "{\"input\": {\"text\":\" \"}}" "https://gateway.watsonplatform.net/conversation/api/v1/workspaces/CONVERSATION_ID/message?version=2016-07-11"
    //see http://php.net/manual/en/curl.examples-basic.php
    //do a return like so if $url is you url
    $defaults = array( 
        CURLOPT_URL => $url,
        your_other_params => go_here,
        CURLOPT_RETURNTRANSFER => 1
    ); 
    $ch = curl_init();
    curl_setopt_array($ch, $defaults);
    $result=  curl_exec($ch);
    if( ! $result = curl_exec($ch)) 
    { 
        trigger_error(curl_error($ch)); 
    } 
    curl_close($ch); 
    echo  json_encode($result);
?>
“data”现在包含一个json,其中包含curl调用的响应

这应该可以

$.ajax({
  url: "https://conversation_username:conversation_password@gateway.watsonplatform.net/conversation/api/v1/workspaces/CONVERSATION_ID/message?version=2016-07-11",
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  data: {
    input: {
      text: " "
    }
  }
})
done(function(data) {
  // handle success response
})
.fail(function(err) {
  // handle error response
});

编辑-更新以使用承诺处理成功和错误响应。

创建一个PHP文件。此处文件名为chat.PHP

<?php
if(isset($_POST['conversation'])) {
$data = array("input"=>array("text"=>$_POST["conversation"]));
$url = "https://gateway.watsonplatform.net/conversation/api/v1/workspaces/a9379972-d820-4cdf-b1cb-ad0af898a534/message?version=2016-07-11";
$ch = curl_init($url);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_USERPWD => "username:password",
    CURLOPT_HTTPHEADER => array("Content-Type:application/json"),
    CURLOPT_POSTFIELDS => json_encode($data),
));
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response));
 }
 ?>

在上述情况下,我如何接受响应?@yodupped展示了如何处理成功和错误响应。文档中列出了更多备选方案
<?php
if(isset($_POST['conversation'])) {
$data = array("input"=>array("text"=>$_POST["conversation"]));
$url = "https://gateway.watsonplatform.net/conversation/api/v1/workspaces/a9379972-d820-4cdf-b1cb-ad0af898a534/message?version=2016-07-11";
$ch = curl_init($url);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_USERPWD => "username:password",
    CURLOPT_HTTPHEADER => array("Content-Type:application/json"),
    CURLOPT_POSTFIELDS => json_encode($data),
));
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response));
 }
 ?>
var xhr = new XMLHttpRequest();
//xhr.open('get', 'chat.php');
xhr.open("GET", "chat.php?data=" + data to be pass, false);
// Track the state changes of the request.
xhr.onreadystatechange = function () {
var DONE = 4; // readyState 4 means the request is done.
var OK = 200; // status 200 is a successful return.
if (xhr.readyState === DONE) {
    if (xhr.status === OK) {
        //alert(xhr.responseText); 
        talking = true;
        botMessage=xhr.responseText;// 'This is the returned text.'
    } else {
        // console.log('Error: ' + xhr.status); // An error occurred during the request.
        alert ('Error: ' + xhr.status);
    }
}
};

 // Send the request to send-ajax-data.php
 xhr.send();