我正在尝试将ajax请求从我的站点传递到包含curl命令的php文件,以将数据从api检索回我的站点。我这样做是因为我需要传递api密钥才能访问数据。
显示的代码当前正确返回了Google时区内容,但是当ajax调用运行时,我只是将php文件的内容(原始代码)恢复了。
我尝试直接在浏览器中打开php文件,并且可以选择下载文件,因此代码未执行。我还通过终端检查了我的PHP版本(7.1.23)。
javascript代码:
var apicall = 'https://maps.googleapis.com/maps/api/timezone/json?location=' + locTime + '×tamp=' + timestamp + '&key=' + apikey;
var xhr = new XMLHttpRequest();
xhr.open('GET', apicall, true);
xhr.onreadystatechange = function () {
var DONE = 4;
var OK = 200;
if (xhr.readyState === DONE) {
if (xhr.status === OK) {
console.log(xhr.responseText);
var jqxhr = $.ajax( "js/curl.php" )
.done(function(data) {
alert( "success" );
console.log(data);
})
.fail(function() {
alert( "error" );
});
} else {
alert ('Error: ' + xhr.status);
}
}
};
xhr.send();
curl.php:
<?php
function callAPI($method, $url, $data){
$curl = curl_init();
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'api-auth:1111111111111111111111',
'Content-Type: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
// EXECUTE:
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
return $result;
}
$get_data = callAPI('GET', 'https://public-api.adsbexchange.com/VirtualRadar/AircraftList.json'.$user['User']['customer_id'], false);
$response = json_decode($get_data, true);
$errors = $response['response']['errors'];
$data = $response['response']['data'][0];
?>
诚然,我是一个非常喜欢PHP / curl的新手,所以这很明显,但是我已经快要尝试了。任何帮助/建议将不胜感激。