我到处寻找我的问题的答案。我真的需要一位专家来帮助解决我的问题。我已经使用ajax创建了将数据POST到外部api url的代码。
我创建的代码如下所示:
$.ajax({
url: "https://www.billplz.com/api/v3/collections",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + "73eb57f0-7d4e-42b9-a544-aeac6e4b0f81:");
},
type: "POST",
data: {
"title": "My First API Collection"
},
contentType: 'application/json',
dataType: 'jsonp',
success: function(data) {
alert("Successfully Registered..");
},
error: function(xhRequest, ErrorText, thrownError) {
alert("Failed to process correctly, please try again");
console.log(xhRequest);
}
});
我试图从API doc获取此示例curl代码:
# Creates an open collection
curl https://www.billplz.com/api/v3/open_collections \
-u 73eb57f0-7d4e-42b9-a544-aeac6e4b0f81: \
-d title="My First API Open Collection" \
-d description="Maecenas eu placerat ante. Fusce ut neque justo, et aliquet enim. In hac habitasse platea dictumst." \
-d amount=299
API文档为here
我曾尝试过前一个问题给出的所有方法,但没有运气。我还尝试在没有PHP的情况下在JQuery / AJAX中执行此操作。
答案 0 :(得分:0)
我不知道我怎么能做到这一点。但这是我的问题的答案。我希望它可以帮助别人。
首先,不要使用AJAX来发布授权密钥,因为AJAX会发布任何人都可以阅读的JSON对象。对于curl进程,我们需要使用服务器端脚本,如Perl,PHP,Python,Ruby,JavaScript(Node),Scala,Java,Go,ASP.NET或ColdFusion。
在我的情况下,我使用PHP来完成卷曲过程。以下是我的ajax帖子代码:
$.ajax({
url: 'creating_bill.php',
data: {
item : 'item'
},
type: "POST",
dataType: "json",
success: function (data) {
alert('Success ! You will redirect in 100 seconds');
console.log(data)
window.open(data.url, '_blank');
setTimeout(function()
{
window.location = 'index.html';
},10000);
},
async: false,
error: function(data) {
handleRequestError(data);
}
})
}
下面是我在php中执行curl过程的代码:
<?php
$item = $_POST['item'];
$api_key = '';
$api_url = '';
$collection_id = '';
$data = array(
'item' => $item,
);
$process = curl_init($api_url);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERPWD, $api_key . ":");
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($process, CURLOPT_POSTFIELDS, http_build_query($data) );
$result = curl_exec($process);
curl_close($process);
print_r($result);
$return = json_decode($result, true);
?>