0

Androidでモバイルアプリケーションを作成しており、phonegap、モバイルjquery ajax codeigniter、およびmysqlを使用しています。ログインプロセスに問題があります。私の AJAX リクエストは常に失敗しました。私は自分の登録プロセスで同じことを使用していますが、うまくいきます。その奇妙な..これはphonegapのlogin.htmlの私のコードです:

   <!DOCTYPE html> 
<html> 
    <head> 
    <title>Login</title> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
        <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
    <script type="text/javascript">

    $(document).ready(function(){

$("input[type=text]").val('');

document.addEventListener("deviceready", init, false);


function init() {

$('a[id^="submitButton"]').on('click',function(){
$("#submitButton",this).attr("disabled","disabled");
//$("#loginForm").on("submit",function() {


  u = $("#username").val();
  p = $("#password").val();


 if(u!='' && p!='') {



                 $.ajax({

                     url:'http://****.dyndns-home.com/health/index.php/health_login?username='+u+'&password='+p,

                     dataType:'json',
                     success:function(data, textStatus, jqXHR) 
                        {
                        $.mobile.changePage("menu1.html");

                         if(data.status==1) {
                         localStorage.setItem("username", u);
                         localStorage.setItem("password", p);

                         $.mobile.changePage("menu1.html");
                         $("input[type=text]").val('');


                         }
                          if(data.status==0){
                          alert("Wrong username or password!");
                          $("input[type=text]").val('');
                          }


                         },

                         error: function(jqXHR, textStatus, errorThrown){
                        alert('AJAX request failed');
                        }

                         });
}
else{
alert("You must enter a username and password");
}
 return false;




});
}
});
    </script>

</head> 



<body> 
<div data-role="page"> 

    <div data-role="header" >

    <h2>Login</h2></div> 
    <div data-role="content">
    <form id="loginForm">
    Username: <input type="text" id="username" value=""  name="username"/>
    Password:<input type="text" id="password" value=""   name="password"/>
    <a href="forget.html" > Ξέχασες τον κωδικό ή το όνομα χρήστη;</a><br>
    <a href="index.html" data-role="button" data-transition="turn" data-inline="true" data-icon="back" >Back</a>
    <a href="" id="submitButton" name="submitButton" data-role="button" data-inline="true" data-theme="b" data-icon="forward">Είσοδος</a>


    </form>
    </div> 
    <div data-role="footer" data-position="fixed"><h2></h2></div> 

</div> 
</body>
</html>

また、login.html を chrome と mozzila で Web アプリケーションとして実行すると、問題はなく、ajax リクエストが成功しました。APIレベル15(Android 4.0.3)のEclipseでこのアプリケーションを実行します。

register.html コードが必要かどうか教えてください。

あなたはどう思いますか?この問題を2日間修正しようとしていますが、何もできません。

ありがとうございました!

4

1 に答える 1

0

エミュレータのブラウザを開き、インターネット アドレスを入力して、エミュレータがインターネットに接続できることを確認します。そうしないと、ページの JS と CSS が読み込まれません。

エミュレータがインターネットに接続できる場合は、以下のコードを試すことができます。私はあなたのコードにいくつかの改良を加えました。たとえば、jQuery フレームワークが同じページに複数回読み込まれました。以下のコードは Android でテスト済みです。

さらに、資格情報の保存に使用している localStorage は、有効期限なしでデータを保存することに注意してください。ローカル ストレージの代わりに sessionStorage の使用を検討する必要があります。sessionStorage は、1 つのセッションのデータを格納します。

<!DOCTYPE html> 
<html> 
    <head> 
        <title>Login</title> 
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
        <script type="text/javascript">

            /**
             * Clears all the inputs in the page.
             */
            function clearPageInputs() {
                $("input[type=text]").val('');
            }


            /**
             * Trim function
             */
            String.prototype.trim = function() {
                a = this.replace(/^\s+/, '');
                return a.replace(/\s+$/, '');
            };

            /**
             * Submits the login form
             */
            function sumbitLoginForm(user, pass) {
                if (user.trim() == '' || pass.trim() == '')
                {   
                    // fill username and password in Greek language
                    alert("\u03a3\u03c5\u03bc\u03c0\u03bb\u03ae\u03c1\u03c9\u03c3\u03b5 \u03c4\u03bf Username \u03ba\u03b1\u03b9 \u03c4\u03bf Password!");
                }
                else
                {
                    $.ajax({
                        type: 'post',
                        url: 'http://.../.../...',
                        data: { username: user, password: pass },
                        dataType: 'json',
                        success: function(data) {
                            if(data && data.status == 1) {
                                // save in local storage
                                localStorage.setItem("username", user);
                                localStorage.setItem("password", pass);
                                // perform page transition 
                                $.mobile.changePage("menu1.html");
                            }
                            else {
                                clearPageInputs()
                                // wrong username / password in Greek language
                                alert("\u0388\u03c7\u03b5\u03b9\u03c2 \u03ba\u03ac\u03bd\u03b5\u03b9 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c3\u03c4\u03bf Username \u03ae/\u03ba\u03b1\u03b9 \u03c3\u03c4\u03bf Password.");
                            }   
                        },
                        error: function (xhr, ajaxOptions, thrownError) {
                            alert("Error: " + xhr.status + "\n" +
                                   "Message: " + xhr.statusText + "\n" +
                                   "Response: " + xhr.responseText + "\n" + thrownError);
                        }
                    });
                }

                return false;
            }

            $(document).ready( function() {
                clearPageInputs();

                $("#submitButton").click(function(){
                    sumbitLoginForm($("#username").val(), $("#password").val());
                });
            });
        </script>
    </head>
    <body> 
        <div data-role="page"> 
            <div data-role="header" >
            <h2>Login</h2></div> 
            <div data-role="content">
                <form id="loginForm">
                    <label for="username">Username:</label>
                    <input type="text" id="username" value=""  name="username"/>
                    <label for="password">Password:</label>
                    <input type="text" id="password" value=""   name="password"/>
                    <a href="forget.html">Ξέχασες τον κωδικό ή το όνομα χρήστη;</a><br>
                    <a href="index.html" data-role="button" data-transition="turn" data-inline="true" data-icon="back" >Back</a>
                    <a href="#" id="submitButton" data-role="button" data-inline="true" data-theme="b" data-icon="forward">Είσοδος</a>
                </form>
            </div> 
            <div data-role="footer" data-position="fixed"><h2></h2></div> 
        </div> 
    </body>
</html>
于 2012-09-01T18:28:02.117 に答える