2

HTTP GET を実行して HTTP POST を実行するハイパーリンクをマップする最良の方法はどれだろうと思ってい<a href=...></a>ます (URL ですべての変数を渡すのを避けたいのですが)。例えばhrefs下の2。submitさらに、ボタンをなくして通常の<a href=...></a>ハイパーリンクを使用したいと考えています。助言がありますか?

<form action="test.php?action=update" method="post" id="cart">
  <table>
    <tr>
      <td>
        <a href="test.php?action=delete&id=<?php echo $id ?>" class="r">
          remove
        </a>
      </td>
      <td>
        <a href="test.php?action=add&id=<?php echo $id ?>" class="r">add</a>
      </td>
    </tr>
    <tr>
     ...
    </tr>
  </table>
  <div> <button type="submit">Update</button> </div>
</form>
4

3 に答える 3

2

jQuery.postを使用してクリックすることをお勧めします。リンクをクリックすると、次のような方法でデータを送信します

$('.r').on('click', function() {
        $.post('test.php', {key:'value', key2:'value2'}, function(data) {
          //error check here
        });
    return false;
});
于 2012-12-11T08:45:05.963 に答える
0

入力タグをフォームで非表示にして、POST として送信することができます。

<td><a href="test.php?action=delete&id=<?php echo $id;?>" class="r">remove</a></td>
<td><a href="test.php?action=add&id=<?php echo $id;?>" class="r">add</a></td>

<input type="hidden" name="id /> と ボタン<input type="button" name="delete" /> などの2 つの形式を使用して上記を書き換えます。

アクションスクリプトで print_r($_POST) を実行した場合。ボタンのリストと非表示フィールドの値が表示されます。これで、アクションを実行するための条件を記述できます。私はここで完全なコードを書いたわけではなく、アイデアを伝えただけです。

編集:以下の例を参照してください。

     <form  method="post" id="cart">
        <table>
                <input type="hidden" name="id" value='some value' />
                <input type="submit" name="action" value="delete" />
                <input type="submit" name="action" value="add" />
            </tr>
            <tr>
                ...
            </tr>
        </table>
        <div><button type="submit">Update</button></div>
     </form>


    <?php print_r($_POST); ?>
于 2012-12-11T08:39:29.323 に答える
0

私の知る限り、リンクを使用して POST リクエストを実行することはできません。JavaScript が無効になっているユーザーのフォールバックとして、リンクと php を使用して GET リクエストを作成し、JavaScript が有効になっているユーザーは、JavaScript を使用してリンクのデフォルト動作をキャンセルし、AJAX を使用して POST リクエストを ajax で作成できます。

例えば:

<a class="submit" href="hallo.html?hello=world&test=yes">Test</a>

そしてjs(私はjqueryを使用しました)は次のようになります:

$('.submit').click(function(){
    var urlPairs = this.href.split('?')[1].split('&'),
        total = urlPairs.length,
        current = [],
        data = {};

    for(;total;) {
        current = urlPairs[--total].split('=');
        data[current[0]] = current[1];
    }

    $.post('test.php', data);

    return false;
});

</p>

詳細については、他の POST 関数を記述して、jQuery post function docを確認することもできます。

PS I wunder、フォームを何らかの方法で使用している場合、送信ボタンを使用しないのはなぜですか?それは CSS スタイリングのためですか? 他の要素と同じようにスタイルを設定できます (一部のブラウザーでは微調整が必​​要です)。

于 2012-12-11T10:18:57.323 に答える