我尝试调用API服务,我无法直接使用js进行调用,但必须从服务器进行调用。因此,我以这种方式发出了xhttp请求:
var myKey = "xxxxxxxxxx";
var name = $('#Inputfield_pad_firstname').val();
var company = $('#Inputfield_company_name').val();
var street1 = $('#Inputfield_pad_address').val();
var street2 = "";
var city = $('#Inputfield_pad_city').val();
var state = "SV";
var zip = $('#Inputfield_pad_postcode').val();
var country = $('select[id=Inputfield_country_registration]').val().toUpperCase();
var phone = $('#Inputfield_pad_phone').val();
var email = $('#Inputfield_email').val();
var TotalValue = "10";
var length = "5";
var width = "5";
var height = "5";
var weight = "1";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4) {
console.log( this.response );
alert(this.response);
} else{
alert(this.response);
}
};
xhttp.responseType = 'json';
xhttp.open("POST", 'https://www.xxxxxx.it/form/getRates.php', true);
xhttp.send(JSON.stringify({
'Method' : 'GetRates',
'Params' : {
'apikey' : myKey,
'to_address': {
'name': name,
'company': company,
'street1': street1,
'street2': street2,
'city': city,
'state': state,
'zip': zip,
'country': country,
'phone': phone,
'email': email
},
'from_address' : {
'name': 'xxxxx',
'company': 'xxxxx',
'street1': 'xxxxx',
'street2': '',
'city': 'xxxxx',
'state': 'IT',
'zip': 'xxxxx',
'country': 'IT',
'phone': 'xxxxx',
'email': 'marco@xxxxxx.it'
},
'parcels' : [
{
'length': length,
'width': width,
'height': height,
'weight': weight
}
],
'Insurance': 0,
'InsuranceCurrency': 'EUR',
'CashOnDelivery': 0,
'CashOnDeliveryCurrency': 'EUR',
'ContentDescription': 'things',
'TotalValue': TotalValue,
'ShippingService': 'Standard'
}
})
);
如果我尝试使所有变量的console.log
告诉我它们未定义。 name
除外。
在警报中总是返回我[object Object]
。
我不知道错误在哪里。
我认为错误是在js文件内部。不管怎样,这是我的php
文件:
header('Access-Control-Allow-Origin: *');
$raw = file_get_contents('php://input');
$req = json_decode($raw);
if ( empty( $req->Params ) or empty( $req->Params->apikey ) ) die;
$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, 'https://www.xxxx.com/api');
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($connection, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($connection, CURLOPT_REFERER, $_SERVER["HTTP_REFERER"]);
curl_setopt($connection, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($connection, CURLOPT_USERPWD, $req->Params->apikey . ":");
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, json_encode($req) );
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
echo curl_exec($connection);
curl_close($connection);
如果我尝试进行console.log,则所有.val()
都是正确的。
Ready states
中的所有XMLHttpRequest
都被调用,但请求以[object Object]
完成。
我该怎么做才能了解正在发生的事情?
谢谢