3

ローカル マシンで JSON 配列を返す PHP で cURL を使用して API 呼び出しを行うことに成功しました。何らかの理由で、このコードをホスト (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);
}

GET の場合、PHP でこの関数を次のように呼び出します。

$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 を使用するのはこれが初めてですが (これは素晴らしいことです)、追加のガイダンスを使用できます。

4

1 に答える 1

0

まず、jQuery は JavaScript ライブラリです。Javascript は、サーバーではなく、クライアントのブラウザーで実行されます。これは、javascript を使用すると、より多くのアプリケーション ロジックを公開できることを意味しますが、同時に、javascript を使用して DOM に直接アクセスし、追加のサーバー リクエストなしで Web ページを変更できるため、ユーザー エクスペリエンス/応答性が向上します。

JavaScript でリクエストを行うには、AJAX を介して行います。これは、サーバーに対して非同期的にリクエストを行う方法です。これを十分に活用するには、javascript、jQuery、および jQuery で AJAX リクエストを実行する方法と、jQuery で DOM (Web ページ) を操作する方法を学ぶ必要があります。

リクエストを作成する 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 を始めるためのリソースを追加できるように、これをコミュニティ wiki として保持します。

于 2013-06-16T17:51:41.733 に答える