0

非同期 HTTP リクエストを介して、既存のサービスを使用して、データベースとの間で情報をロード/保存できます。しかし、これらのリクエスト (AJAX) は、少なくとも私の知る限り、クライアント側 (JavaScript スクリプトなど) からしか実行できません。

たとえば、jQuery ajaxメソッドを使用する場合:

$.ajax({ 
    type: "POST", 
    url: someurl,
    dataType: 'xml',
    data: xmlString, 
    success: function(data) { 
        // some code here 
    }
});

PHPスクリプトから同じサービスを使用するにはどうすればよいですか? つまり、POST または GET メソッドを使用して「PHP から AJAX 呼び出しを行う」にはどうすればよいでしょうか。

4

2 に答える 2

2

cURL ライブラリを使用して同じ URL にアクセスできます。

受信サービスがチェックする場合、「X-Requested-With」ヘッダーを「XMLHttpRequest」に設定する必要がある場合があります。

それ以外の場合は、POST コメント付きフィールドを使用することを除いて、この回答のように進みます。

この回答は、既存の AJAX サービスをデバッグおよびリバース エンジニアリングする方法を提案しています。次に、たとえばSimpleXMLを使用して回答をデコードできます。回答は、投稿したjQueryコードからXML形式で取得されます。

テスト。

$url = 'http://your-url';
$fields = array(
    'key' => 'value',
    // other fields
);
$headers = array(
    'X-Requested-With: XMLHttpRequest',
);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// Note that you might have to set CURLOPT_POSTFIELDS to a urlification of
// $fields instead of an array, in case the service distinguishes form-data
// from url encoding.
curl_setopt($ch, CURLOPT_POST, True);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);

// IMPORTANT: some AJAX services will expect inbound data to be coming JSON encoded, so if that is the case, you shall have to write instead
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$xml = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($xml);

print_r($xml);
于 2012-10-11T20:39:07.803 に答える
1

PHPでのAJAXは不可能ですが、外部サイトへのGETおよびPOSTの実行について話している場合は、libcurlが必要になります。

http://php.net/manual/en/book.curl.php

そこにはたくさんの例があります;)

于 2012-10-11T20:36:27.320 に答える