web-dev-qa-db-ja.com

フォームを使用せずにPOSTメソッドを使用してURLにパラメーターを投稿する

POSTメソッドを使用してURLにパラメーターを投稿したいのですが、フォームを使用できません。フォームを使用しても、ユーザーの操作なしで自動投稿する必要があります。これは可能ですか?どうすればできますか?

18
Gaurav Sharma

JavaScriptとXMLHTTPRequest(AJAX)を使用して、フォームを使用せずにPOSTを実行することができます。 このリンク をチェックしてください。ただし、ブラウザ。

14

jQuery.post を使用する

$.post(
  "http://theurl.com",
  { key1: "value1", key2: "value2" },
  function(data) {
    alert("Response: " + data);
  }
);
27
Josh Stodola

cURLはAjaxを使用するオプションであり、フロントエンドでのバックエンドの問題を解決することはそれほど適切ではありません。

CURLなしでそれを行うことに関する非常に有用な投稿はこれです: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

これを行うためのコード(テストされていない、改善されていない、ブログ投稿から):

function do_post_request($url, $data, $optional_headers = null)
{
   $params = array('http' => array(
                'method' => 'POST',
                'content' => $data
             ));
   if ($optional_headers !== null) {
      $params['http']['header'] = $optional_headers;
   }
   $ctx = stream_context_create($params);
   $fp = @fopen($url, 'rb', false, $ctx);
   if (!$fp) {
      throw new Exception("Problem with $url, $php_errormsg");
   }
   $response = @stream_get_contents($fp);
   if ($response === false) {
      throw new Exception("Problem reading data from $url, $php_errormsg");
   }
   return $response;
}
4
Mythica

まっすぐなPHPでcURLを使用せずに実行する方法: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

3
Mr. Smith

cURLまたはAJAXで実行できます。応答は、答えと同様に不可解です。

0
Elzo Valugi