1. ホーム
  2. javascript

非AJAXのjQuery POSTリクエスト

2023-07-26 07:08:48

質問

私はjQueryのPOST関数を使用しようとしていますが、それはAJAXスタイルでリクエストを処理しています。つまり、私が行くように指示したページに実際に行っていないのです。

$("#see_comments").click(function() {
    $.post(
        "comments.php", 
        {aid: imgnum}, 
        function (data) {

        }
    );
});

この関数は コメント.php のページで、手元にある補助的な値を表示します。正常に投稿されていますが、リダイレクト先が コメント.php .


ダグ・ナイナー 明確化しました。

  1. 15個のリンク(画像)があります。リンクをクリックすると、私のJavaScriptが読み込まれます。スクリプトは imgnum を開いた。これは imgnum に欲しいのは コメント.php . 私はこのJavaScriptを使用する必要があり、他の手段はトリックを行うことはできません。このJavaScriptは必須です

  2. あなたのメソッドは、正常に援助値をPOSTします。しかし comments.php で、その値をechoしようとすると、何も表示されません。

  3. Firebugを使用しています。コンソールでは、手順(2)で作成したecho REQUESTが正常に表示されています。

どのように解決するのですか?

何をしようとしているかはわかりますが、あなたが望んでいるものではありません。

まず、あなたが 変更 のデータをサーバ上で変更するのでない限り、サーバ上で POST リクエストは使用しないでください。単に #see_comments は通常の <a href='/comments.php?aid=1'>...

もしあなたが を持つ を使用します。 POST を使用し、その後、ページがあなたの呼び出しに従うようにするために、これを行います。

$("#see_comments").click(function() {
  $('<form action="comments.php" method="POST">' + 
    '<input type="hidden" name="aid" value="' + imgnum + '">' +
    '</form>').submit();
});

これが実際にどのように機能するのか。

まず $.post だけ はAJAXメソッドであり、従来の form サブミットには使用できません。したがって、値を投稿できるようにするために が新しいページに移動するようにシミュレートする必要があります。 form の投稿をシミュレートする必要があります。

ということで、流れは以下のようになります。

  1. 画像をクリックすると、JSコードに imgnum
  2. 次に、誰かがクリックすると #see_comments
  3. を一時的に作成します。 form と共に imgnum の値を隠しフィールドとして使用します。
  4. そのフォームを送信すると、その値 をロードします。 comments.php ページ
  5. あなたの comments.php ページは投稿された変数にアクセスできるようになります (つまり、PHP では $_POST['aid'] )