繁体   English   中英

如何在Ajax中调用curl cmd

[英]how to call curl cmd in Ajax

这是我的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"

这应该工作。

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

http://api.jquery.com/jquery.ajax/

编辑-更新为使用promise处理成功和错误响应。

创建一个php文件,将该命令放在该文件中,从curl响应中返回所需内容,然后通过ajax调用此php文件。

文件ajax_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);
?>

你的调用js看起来像

$.post( "ajax_curl.php", { passed_data: "pass_whatever_you_need" }, function( data ) {
  console.log( data ); 
}, "json");

'data'现在包含一个json,其中包含您curl响应的响应

创建一个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));
 }
 ?>

并使用Ajax调用它

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM