0

JSでAJAXを使って行うのと同じことをすべてPHP内で実行できるようにしたいと思います。これは可能ですか?

たとえば、次のコードについて考えてみます。

$.ajax({
        async: false,
        url: "/path/to/script/script.php",
        type: "post",
        data: {
            'arg1':'arg_val',
            'oper':'get_data',
            'arg2':'arg_val_2',
            'id_number':'223'
        },
        dataType: 'json',
        success: function(data){
            est_data = data[0];
        },
        error: function(jqXHR, textStatus, errorThrown){
            return jqXHR['responseText'];
        }
    });

PHP内でも同じことをしたいと思います。いくつかの投稿変数をに渡しscript.php、文字列応答を返すようにします。これsuccessは、上記のコードの関数で取得します。

私はいくつかの調査を行い、 http_post_fieldsを使用してこれを実行できるはずだと思いましたが、次の応答があります。

HTTP / 1.1 200 OK日付:2012年9月19日水曜日15:42:01 GMTサーバー:Apache / 2.2.20(Ubuntu)X- Powered-By:PHP / 5.3.6-13ubuntu3.9 Set-Cookie:53f143479d91e79747661fcf2777a0fa = 5kidtm7rcdn14o33amljgg8922 ; path = / Vary:Accept-Encoding Content-Length:15 Content-Type:text/htmlは許可されていません。

誰もがこれを行う方法を知っていますか?

ありがとう!!

4

3 に答える 3

2

この場合、カールがあなたの親友になると思います。これを使用してPOSTリクエストを実行し、送信されるフォームをシミュレートしてデータを送信できます。

この投稿をチェックしてください。

$url = 'http://example.com/request.php';
$fields = array(
            'username' => urlencode($last_name),
            'password' => urlencode($first_name),
        );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);
于 2012-09-19T15:58:48.840 に答える
1

もちろん、これを行うことができます。あなたがする必要があるのは、PHPライブラリー(例えばcurl)を使用してスクリプトにPOSTを送信することです。これに関してAJAXについて特別なことは何もありません、それはJavascriptで書かれているだけです。結局のところ、それは単なるHTTP応答/要求です。

于 2012-09-19T15:58:54.707 に答える
1

はい、stream_context_create()を使用してfile_get_contents()使用する必要があります。curlを使用することもできます。

file_get_contentsを使用した例を次に示します。

$options = array(
  'http'=>array(
    'method'=>"POST",
    'header'=>
      "Accept-language: en\r\n".
      "Content-type: application/x-www-form-urlencoded\r\n",
    'content'=>http_build_query(
        array(
            'arg1'=>'arg_val',
            'oper'=>'get_data',
            'arg2'=>'arg_val_2',
            'id_number'=>'223'
        ),'','&'
    )
));
$context = stream_context_create($options);
$refno = file_get_contents('/path/to/script/script.php',false,$context);
$refno = json_decode($refno, true);
var_dump($refno); // juse use $refno as an array.
于 2012-09-19T16:02:00.600 に答える