2012-03-08 12 views
2

jquery mobileで簡単なWebアプリケーションを作成しようとしています。私は一緒にajaxの結果を表示するフォームで簡単なログを入れている。問題は、私のアヤックスがURLが有効かどうかを知るために警告を出しても結果が得られないことです。 jquery mobileを使って何か特別なことがありますか?Jquery Mobile - ajax結果の問題を取得する

大変感謝しています。

<div data-role="page" id="login" data-theme="a" data-add-back-btn="true"> 
     <div data-role="header"> 
      <h2>Log in</h2> 
     </div> 
      <div data-role="content" data-theme="a" data-add-back-btn="true"> 
       <form action="mobilelogin.php" method="post"> 
        Email: <input type="text" name="email" id="useremail"> 
        Password: <input type="password" name="password" id="userpassword"> 
       <input type="submit" value="Enter"> 
       </form> 
       <div id="loginresult"></div> 
      </div> 
     <div data-role="footer"><h4>Chris Sherwood Design 2012</h4></div> 
    </div> 

JSファイル:

$(document).ready(function() { 

    $('form').submit(function() { 
    var emailchecker = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    var email = $("#useremail").val(); 
    var userpassword = $("#userpassword").val(); 
    var checklength = userpassword.length; 

    if(email == ""){ 
    alert('Please fill in email field'); 
    return false; 
    }else if(userpassword == ""){ 
    alert('Please fill in password field'); 
    return false; 
    }else if((!emailchecker.test(email))){ 
    alert('Please use a valid email'); 
    return false; 
    }else if(checklength < 6 || checklength > 6){ 
    alert('Password must be six characters'); 
    return false; 
    }else{ 
    var datastring = $(this).serialize(); 
    alert(datastring); 
    return false; 
     $.ajax({ 
     type: "POST", 
     url: "mobilelogin.php", 
     data: datastring, 
     success: function(data){ 
     $("#loginresult").html(data); 
     } 
     }); 

    } 

    }); 

PHP

<?php 
echo 'nothing special here...'; 
?> 

答えて

2

あなたのコードから:

return false; 
    $.ajax({ 
    type: "POST", 
    url: "mobilelogin.php", 
    data: datastring, 
    success: function(data){ 
    $("#loginresult").html(data); 
    } 
    }); 
ここ

はHTMLコードです

ajaxリクエストの前にfalseを返しています。

EDITは、(それが単純なミスだったと仮定、より多くの説明を追加した)

をあなたはfalseを返すのいずれか移動する必要があります。以下アヤックス()の呼び出しに、またはそうのようなイベントオブジェクトを使用します。

$('form').submit(function(e) { 
    e.preventDefault(); 

ただfalseを返す使用に問題。その前に何かにエラーがあると、それはデフォルトのアクションを止めないということです。したがって、あなたのAjaxリクエストのエラーは、falseを返すことができなくなります。アクションページの読み込みを開始します。

+0

もし私がfalseを返した場合、ページは 'mobilelogin.php'にリダイレクトされ、未定義となります。答えはもう考えてくれてありがとう? – ChrisSherwood

+0

デフォルトのサブミット・アクション(その戻り値をfalseにするか、またはイベント・オブジェクトを使用して)を実行しないでください。私はあなたのために私の答えでそれを明確にします。 – Tjkoopa

+0

回答 - $アヤックス({ タイプ: "POST"、 URL: "mobilelogin.php"、 データ:datastring、 成功:機能(データ){ $( "#のloginresult")HTML(データ) ; } }); falseを返します。 'return false;' ajaxコールの下にある必要がありました!常にこのゲームで学ぶ! – ChrisSherwood

関連する問題