1

私の意図は、フォームからサーバーにデータを送信し、ページをリロードしないことです。更新されたデータを表示する必要もありません。私はFirefoxを使用して開発しており、必要なものを取得するために2つのパスを検討しています。

  1. フォーム内にボタンを配置すると、フォームは「GET」リクエストとしてそれを含むページの名前で送信されることを発見しました。この場合のフォームタグにはメソッド属性がなく、アクションタグは空です。必要な関数をaction属性に入力すると、ブラウザーが残りのフォームフィールドをリクエストに適用します。フォームの作成は便利だと思いますが、ブラウザが先に進み、サーバーからの応答にページを置き換えて、元のページから離れてしまいます。
  2. ボタンをフォームから取り出し、それをjavascript関数に排他的に配線することで、関数をonreadystatechangeイベントに登録できます。これには、サーバーが応答したときにページをリロードするのではなく、関数を実行する効果があります。これの欠点は、関数が独自に「GET」リクエストを作成する必要があることです。

javascript関数がフォームに独自のデバイスを使用して送信するように指示し、応答を処理する準備ができている方法があるはずだと私には思えます。これに慣れていないので、この要件の「ベストプラクティス」がどうなるかについてはよくわかりません。

4

4 に答える 4

1

を使用し<button>て詳細を投稿できます。

function ajaxPage(postPage, paramList) {
    xmlhttp.open("POST",postPage,false);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send(paramList);
    return xmlhttp.responseText;
}

この場合、yourpostPageは関連するコードの一部へのアドレスであり、区切られた名前と値のペアparamListのリストです。&

よろしく、ウェスティ

于 2013-01-31T23:00:58.950 に答える
0

フォームに「onsubmit」関数を追加できます。

ブラウザがフォームを投稿しないようにするには、falseを返すか、その関数でevent.preventDefault()を呼び出すことが重要です。

HTML:

<form onsubmit="javascript:myFunction()">
    ...
</form>

脚本:

function myFunction(evt) {
    // do your ajax call...
    evt.preventDefault();
}
于 2013-01-31T22:49:39.007 に答える
0

「送信」は本当に必要ありません。ajaxを使用してオートコンプリートの提案の実装を検索できます。

Onfocus On ..すべてのフォームデータをサーバー側に送信する場合でも、サーバー側の応答でオートコンプリートが必要であり、必要なことをユーザーに説明できます。

このリンクは少し役立つかもしれません。

于 2013-01-31T22:55:19.287 に答える
0

これが私が最終的に得たものであり、元の質問で説明したようにパスウェイ番号2を進めます。スクリプトを呼び出すボタンはフォームの外にあるため、送信イベントはありません。フォームからのデータは、関連する質問へのこの回答で説明されているように、スクリプトによって収集されます。

https://stackoverflow.com/a/589100/747544

そこから、「get」リクエストはスクリプトによって作成されます

XMLHttpRequest.open("GET", "/myCommand?"+queryString ,true);
XMLHttpRequest.send(null);

フォームは実際には送信されることなくスクリプトによって「スキャン」されるため、onSubmitイベントがfalseを返すというデフォルトの動作を防ぐ必要はありません。またはpreventDefault()。

于 2013-02-01T18:20:25.927 に答える