3

私は次のソースを持っています:

$('#loginnow').click(function() {       
    var login_useroremail       = $('input[name="login_useroremail"]').val();
    var login_password          = $('input[name="login_password"]').val();

    $.ajax({
            type: "POST",
            url: "http://www.example.com/login.php",   
            data: {
                login_useroremail: login_useroremail,
                login_password: login_password              
            },
            dataType: 'text',
            success: function(data) {       
                if(data == 'ok')
                {
                    alert('Registration successful!');  
                }
                else
                {
                    alert('Registration failed. Try again later.'); 
                }

            },
            error: function(data) {
                alert('Registration failed. Try again later.');
            }
    });     
});

これらのアラートと状態が厄介であることはわかっていますが、私はプロジェクトの初期段階にあるので、後で改善します。;) jQuery、jQuery Mobile、および PHPTAL を使用しています。

例を呼び出してログインが実際に成功した場合 (= サーバーが "ok" を返す)、すべてが見つかりました。

私の質問: サンプルを呼び出してログインに失敗すると、URL バーにパラメーターが自動的に追加されるのはなぜですか? 呼び出し後は次のようになります。

www.example.com/index.php?user=blah&pw=yadda&...

時々それはまたのようなアンカーを持っています

www.example.com/index.php#ui-state=dialog

少なくとも、それが何のためにあるのかは想像できます。モバイル アプリで現在何をしているかを思い出すのに役立つと思います。

4

1 に答える 1

2

では、行きましょう。

何が起こっているのかわかりましたが、少しトリッキーです。

上記の AJAX リクエストを使用する場合、通常の HTML フォームのデータを使用しました。HTML フォームを開くフォーム タグで、アクション属性またはメソッド属性を指定していませんでした。そっくりだった

<form name="bla">
...
</form>

今何が起こったのですか?フォームの送信ボタンを押しました。jQuery イベントがトリガーされました。だが同時に、ノーマルフォームイベントも発動。アクションやメソッドを設定していないので、自動的に

<form name="bla" method="get">
...
</form>

もちろん、GETパラメータはその後URLに表示されたので、それが私を終わらせたものです。:)

私は現在、jquery スクリプトで .preventDefault() を使用して、通常のフォームが AJAX 以外の方法で送信されないようにしています。

于 2014-02-08T10:43:14.130 に答える