Ajax JQuery将POST数据发送到外部api

时间:2017-02-13 09:26:08

标签: javascript jquery ajax curl

我到处寻找我的问题的答案。我真的需要一位专家来帮助解决我的问题。我已经使用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中执行此操作。

1 个答案:

答案 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);
?>