2016-09-19 7 views
-1

私はデータベースとのコミュニケーションのすべての部分を集めて、cordovaアプリケーションでajaxリクエストを実行する必要があります。だから、私はローカルホストを設定し、データベースを作成し、そこに私のPHPファイルを作成し、cordovaを設定し始めた。私はブラウザで最初にそれを開発し、それを行くことができたが、今はすべてのAjaxリクエストは実行されていない。例えば、これは私のlogin.htmlをファイルです:AJAXリクエストはコードバで働いていませんか?

<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 
    <script type="text/javascript" src="js/jquery-2.2.4.min.js"></script> 
    <script type="text/javascript" src="js/jquery.mobile-1.4.5.min.js"></script> 
    <link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css" /> 
    <link rel="stylesheet" href="css/style.css" /> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#insert").click(function() { 
     var username = $("#username").val(); 
     var password = $("#password").val(); 
     var dataString = "username=" + username + "&password=" + password; 
     if ($.trim(username).length > 0 && $.trim(password).length > 0) { 
      $.ajax({ 
      type: "POST", 
      url: "http://localhost/jan/login.php", 
      data: dataString, 
      crossDomain: true, 
      cache: false, 
      success: function(data) { 
       if (data == "success") { 
       window.sessionStorage.setItem("loggedIn", 1); 
       window.sessionStorage.setItem("username", username); 
       window.location.replace("index.html"); 
       } else if (data == "error") { 
       alert('error'); 
       } 
      } 
      }); 
     } 
     return false; 
     }); 
    }); 
    </script> 
</head> 

<body> 
    <div data-role="page"> 
    <div data-role="header"><h1>Login</h1></div> 
    <div data-role="content"> 
     <div class="list"> 
     <div class="item"> 
      <label>Username</label> 
      <input type="text" id="username" value="" /> 
     </div> 
     <div class="item"> 
      <label>Password</label> 
      <input type="password" id="password" value="" /> 
     </div> 
     <div class="item"> 
      <input type="button" id="insert" class="button button-block" value="Login" /> 
     </div> 
     </div> 
    </div> 
    <div data-role="footer" class="center"> 
     <a href="register.html">Register</a> 
    </div> 
    </div> 
</body> 

</html> 

これは

<?php 
    include 'db.php'; 

    $data=array(); 
    $q=mysqli_query($con,"select password from users where username=\"{$_POST['username']}\""); 

    if(mysqli_num_rows($q) === 0) 
     die('error'); 

    $row=mysqli_fetch_assoc($q); 

    if($row['password'] == $_POST['password']) 
     echo 'success'; 
?> 

すべてがブラウザで期待どおりに動作しますlogin.phpがあるが、私はAndroidのエミュレータでそれを実行しようとすると、 Android Studioを使用すると、送信ボタンは何もしません。しかし、私はそれが必要なようにページを切り替える登録を押してください。だから私は間違ったajaxの実装やデータベースの設定が原因であると結論づけました。

P.S.アプリの変更を見るには、wwwフォルダからapps/android/assets/wwwにすべてのファイルをコピーする必要がありますか?

P.P.S私の意見では、エミュレータはローカルホストにアクセスできないため、データベースに問題があります。アプリケーションを使用してユーザーのログイン/登録を使用してコードバアプリを使用したい場合、バックエンドを設定するにはどうすればよいですか?私はWebサーバーからこれらのphpファイルを実行しようとしましたが、私のアプリケーションとデータベースが同じドメイン上で実行されないため、ajaxでクロスドメインの問題が発生しました。

答えて

2

localhostの代わりにコンピュータのIPアドレスを使用してください。動作します。 これらのファイルをコピーする必要はありません。アプリケーションをビルドすると自動的にコピーされます。

関連する問題