6

jQuery Mobile サイトで ajax を介して簡単なログイン フォームを送信しようとしていますが、問題が発生しています。

フォームを (POST 経由で) 送信すると、フォーム パラメータが URL に追加されているようです。それだけでなく、フォーム送信前に表示されていた固定ページが消去されます。

たとえば、私はページにいますlocalhost:8080/myapp/#sign_up

次に、URLが次のようになるフォームを送信します。localhost:8080/myapp/?email=a@a.com&pass=pass

#sign_upそのため、検証エラーが発生して「戻る」ボタンをクリックしても、ページに戻りません。

何か案は?

4

3 に答える 3

15

カスタム イベント ハンドラーを使用してフォーム送信を処理する場合submit、同じページで検証を処理できます。

//bind an event handler to the submit event for your login form
$(document).on('submit', '#form_id', function (e) {

    //cache the form element for use in this function
    var $this = $(this);

    //prevent the default submission of the form
    e.preventDefault();

    //run an AJAX post request to your server-side script, $this.serialize() is the data from your form being added to the request
    $.post($this.attr('action'), $this.serialize(), function (responseData) {

        //in here you can analyze the output from your server-side script (responseData) and validate the user's login without leaving the page
    });
});

jQuery Mobile がフォームの独自の AJAX 送信を実行しないようにするには、フォーム タグに次のように記述します。

<form data-ajax="false" action="...">
于 2011-11-04T17:06:32.887 に答える
0

フォームを送信し、ajax (デフォルト) を使用しない場合は、フォーム文字列に 'data-ajax="false"' を追加する必要があります。

 <form data-ajax="false" action="test.php" method="POST">
于 2013-05-22T13:35:51.333 に答える