2017-03-10 4 views
0

AWS S3でホストされているウェブサイトをセットアップしました。私のホームファイルはホームディレクトリにindex.htmlとして設定されています。私がウェブサイトを開くと、それは私が望むものと同じファイルで開きます。私が自分のサイト(mysite.io)に行くと、mysite.ioにロードされます。これもまた私が望むものです。私が持っている問題は、 "/?#"がURLにないと、私が持っているコールバック関数が実行されていないということです。ウェブサイトのホームページがコールバックを実行していない?#

以下のコードからわかるように、ユーザーがログインフォームにデータを入力すると、電話とパスワードが読み込まれ、authenticateUserメソッドに渡されます。 URLに「/?#」がない場合、cognitoUser.authenticateUser(...)は以下のログで示されるように実行されません。

$('#login-form').submit(function() { 
    var phone = $('#login-phone').val(); 
    var password = $('#login-pass').val(); 
    authenticateUser(phone, password); 
}); 

function authenticateUser(username, password) { 
    // a bunch of variables created here 
    console.log("This is always executed"); 

    myVariable.doSomething(someStuff, { 
    onSuccess: function (result) { 
     console.log("This is not executed if there is no '?#' after mysite.io/"); 
    }, 
    onFailure: function (err) { 
     alert("Neither is this"); 
    } 

    }); 

    console.log("This is also always executed"); 
} 

私は、オンラインでこのエラーについては何も見つけることができないと私はwebdevにかなり新しいですといくつかの助けを本当に感謝します。

答えて

0

これは、フォームを送信しているため、ページがリロードされるためです。提出イベント処理機能の下部にevent.preventDefault()を使用してください。もちろん、eventオブジェクトをパラメータに渡す必要があります。

$('#login-form').submit(function(ev){ 
    authenticateUser($('#login-phone').val(), $('#login-pass').val()); 
    ev.preventDefault(); 
}); 
+0

ありがとうございます。それはうまくいった!だから私は実際にフォームを提出する際にページをリロードする必要はないので、私のフォーム提出のそれぞれに 'event.preventDefault()'を入れたいのですか?いつあなたはページをリロードしたいですか? –

+0

はい、AJAXを使用している場合、最近は常にそうであるべきですが、 'event.preventDefault()'を使用してください。ああ、HTML '

'は 'action'属性に基づいて実行されるサーバーコード(通常はPHP)コードを意味する普通の(古い学校の)サブミッションの間に' 。放置されている場合、ページはそれ自体に送信されます。あなたは保証されたページリダイレクトを望んでいない限り、古い学校のフォーム提出を使用したくないでしょう。通常、何か問題が生じた場合にエラーを生成するテストを実行するので、リダイレクトは送信後に発生するはずです。 – PHPglue

関連する問題