8

ユーザーが自分のコントロール パネルにログインすると、受信メッセージが表示されます。各メッセージの近くに「返信」ボタンがあります。そのボタンを実装する正しい方法は何ですか?

3 つの主なオプションがあります。

  1. リンクを使用する:

    <a href="customer.php?reply&messageid=1234">Reply</a>.
    

    不利益:

    • そのリンクをボタンのようにスタイルする必要があります。「返信」というアクションは、リンクではなくボタンで表す必要があると考えているためです (私の意見では、リンクは、何らかのリソースにリンクしている場合や、リンク テキストに名詞がある場合に使用する必要があります。また、アクションを実行したい場合は、キャプションに動詞 (アクション) を含める - ボタンを使用する必要があります)。

  1. 次のボタンを使用します。

    <button onclick="location.href='customer.php?reply&messageid=1234'">Reply</button>`  
    

    不利益:

    • ユーザーは JavaScript を有効にする必要があります。私たちの統計によると、ユーザーの 99.8% が JavaScript を有効にしていますが、そうでない場合、いずれにせよ、私たちの Web サイトで作業することは非常に困難です (JavaScript で実装された多くの機能があります)。したがって、実際のアクティブ ユーザーの 100% が JavaScript を有効にしていると思います。

  1. 次のフォームを使用し<input type="submit">ます。

    <form action="customer.php?reply" method="get">
      <input name="messageid" type="hidden" value="1234" />
      <input type="submit" value="Reply" />
    </form>
    

    不利益:

    • ここでフォームを使用するのは「人工的」だと思います。ユーザーは何も入力しません。ボタンを機能させるためだけにフォームを使用します。また、何も変更せず、ユーザーに返信フォームを表示するだけでよい場合に POST リクエストを使用することは、REST の原則に違反していると思います。しかし、GET を使用しても、この場合、フォームを使用するのは人為的だと思います。

その他の注意事項:

  • リンク内でボタンを使用しても、IE では機能しません。
  • これは私たちのウェブサイトの非公開セクションであるため、検索エンジンはそれを見ることができず、検索エンジンがそれを追跡してリソースをインデックス化するのに役立つリンクは実際には必要ありません (ボタンの代わりにウェブでリンクを使用するための通常の議論です)

あなたはどちらを選びますか、そしてその理由は何ですか?

アップデート。さて、私はリンクを使用することにしました。議論してくださった皆様、ありがとうございました!

4

4 に答える 4

9

私は間違いなくリンクを使用します:プログレッシブ エンハンスメント.

Javascript がオフになっている場合でもボタンを使用できるようにする必要があります (覚えておいてください: すべてのユーザーは、ページの読み込み中は非 JavaScript ユーザーです。低速の接続 (モバイルなど) を使用している場合は、できるはずです)。ボタンが表示されたらすぐに返信します)。

スタイリングは問題ではありません (デフォルトのボタン スタイルを使用するつもりはありませんでしたね?)。

ユーザーが何も送信していないときに POST を使用するのは間違いです。GETしても、まだフォームの素材ではありません...

于 2012-07-12T22:35:17.740 に答える
1

POST私はaが間違っていることに同意します。したがって、を使用するようにフォームを設定しますmethod="get"。1つのフォームのみを使用し、非表示のフィールドを省略します。を使用する<button>と、表示されるテキストが送信された値と異なる場合があります。

<form action="customer.php" method="get">
    <input type="hidden" name="reply" />
    <div class="message">
        <div class="messageBody">..</div>
        <button name="messageid" value="1234">Reply</button>
    </div>
    <div class="message">
        <div class="messageBody">..</div>
        <button name="messageid" value="1235">Reply</button>
    </div>
    ...
</form>
于 2012-07-12T22:49:43.823 に答える
1

JavaScript 以外のブラウジングを安全に無視できるという前提の下でのみ方法 2 が正しいことを除いて、すべての方法は正しいです。

フォームについて提示された仮定とコメントは正しくないか、少なくとも誤解を招きます。フォームはユーザー入力を伴う必要はありません。フォームを使用して、以前に収集したデータを送信することができます。他のフィールドは送信フィールド以外にはありません。POST メソッドは、入力データの量が原因で (GET データの上限がかなり低いため)、何も変更しない場合でも使用できます。さらに、質問に示されているフォームは、デフォルトのメソッドである GET を使用しています。

それ以外の場合、これはほとんど非建設的な質問であり、技術的な解決策ではなく、議論と議論が求められます。

于 2012-07-13T08:09:13.740 に答える