我已经成功地使用PHP中的cURL进行API调用,它在我的本地机器上返回一个JSON数组。出于某种原因,当我将此代码推送到我的主机(bluehost)时,我什么都没回来。我没有得到任何错误,只是null。
有人建议使用cURL是老派,不管怎样都不推荐,我应该在jQuery中这样做。我已经把我当前的代码放在下面了,任何人都可以指出我正确的方向如何在jQuery或PHP中的其他方法中完成同样的事情?
function CallAPI($method, $url, $data = false)
{
$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_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
return curl_exec($curl);
}
我在PHP中使用这样的函数调用GET:
$api_querystring = "https://discreet.afty.io/api/swags?type=0&status={$swag_status}";
$response = CallAPI('GET', $api_querystring);
$badges = json_decode($response);
我得到了一个JSON数组对象,如:
Array ( [0] => stdClass Object ( [__v] => 21 [_id] => 51ae35bd005f377a06000018 [apns_token] => 8ef99cb6c8fa2928468cfbaa5b1d6d0244e46ad0ca6dd56e476e26edffbb8c59 [badge] => 51b64157a1facb5b2b000018 [device_id] => EB3D1DFF-5557-4EEA-8BE3-E261FBB5C058 [first_name] => Jeff [last_name] => S [metadata] => stdClass Object ( [limit] => Erotic Chat ) [groups] => Array ( [0] => 51ae99e3005f377a06000036 [1] => 51a84dc3a8a3801477000007 [2] => 51ae70085068176b06000023 [3] => 51af69ad5068176b0600002f [4] => 51b2a0af50c8b0507d00000c [5] => 51a84df6a8a3801477000008 [6] => 51ae5c625068176b06000021 [7] => 51a84e91a8a380147700000a [8] => 51b69543a1facb5b2b000020 [9] => 51b695cddaa06e871900001b [10] => 51b695f1daa06e871900001c [11] => 51a84e81a8a3801477000009 ) [connected] => [admin] => [flagged] => [blocked] => [apns_count] => 0 [apns_status] => 0 [_create_date] => 2013-06-04T18:45:17.460Z [_last_modified] => 2013-06-16T06:17:07.516Z ) )
和POST这样:
$api_querystring = "https://discreet.afty.io/api/admin/users/{$id}";
$response = CallAPI('POST', $api_querystring, $data);
我知道这可能是非常基本的东西;但这是我第一次使用API(这很酷),但我可以使用一些额外的指导。
答案 0 :(得分:0)
首先,jQuery是一个javascript库。 Javascript在客户端的浏览器中执行,而不是在服务器上执行。这意味着使用javascript可以暴露更多应用程序逻辑,但同时增强用户体验/响应能力,因为您可以使用javascript直接访问DOM并修改网页而无需额外的服务器请求。
要在javascript中发出请求,我们通过AJAX来做,这是一种异步向服务器发出请求的方法。要充分利用这一点,您需要学习javascript,jQuery,以及如何在jQuery中执行AJAX请求以及如何使用jQuery操作DOM(网页)。
在最简单和孤立的形式中,这里是javascript代码(使用jQuery库),它会发出请求:
$.ajax({
url: "https://discreet.afty.io/api/swags",
type: "get",
data: {
type: 0,
status: somevar
},
success: function(data) {
// do something with returned JSON
}
});
我将此保留为社区维基,以便其他用户可以添加资源以开始使用Javascript / jQuery / AJAX。