0

できるだけ説明的になるように努めます。多すぎたらごめんなさい。

jquery と個人用スクリプトをリンクする単純なログイン フォームを含む HTML ファイルがあります。

 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

 <title>Login</title>
 <script src="js/jquery-1.8.1.min.js"></script>
 <script src="js/50load-json.js"></script>
 </head>

 <body>

<h1>Login Form</h1>
 <form id="myform">
        Username<br>    <input type="text"      name="username" id="username"><p>
        <!--Password    <input type="password"  name="password"> -->
        Password<br>    <input type="text"      name="password" id="password"><p>
                        <input type= 'submit' value='Login' id="submitLogin">
 </form>    
<div id="output"></div>
 </body>
 </html>

スクリプト (50load-json.js) から PHP を呼び出します。PHP は DB に接続し、クエリを実行してユーザー名とパスワードを照合します。

私のjsファイルのコードは次のとおりです。

 $(document).ready(function(){

      $("#myform").submit( function () { 
    var output = $('#output');    
            var my_post_data = "username=bloc&password=party";//These Parameters should evaluate as TRUE in the PHP

      $.post("loginthisPOST.php", my_post_data)
   .done(function(data) { alert("Data Loaded: " + data);})
   .fail(function(data) { alert("error: " + data); });
       });    
       });

私の「loginthisPOST.php」は次のようになります。

 <?php
   header('Access-Control-Allow-Origin: *');
   header('Access-Control-Allow-Methods: POST');
   header('Access-Control-Allow-Headers: X-Requested-With');

   $u = strip_tags($_POST['username']);
   $p = strip_tags($_POST['password']);

   $con = mysql_connect("database","username","password");
   if (!$con)
   {
   die('Could not connect: ' . mysql_error());
   }
        mysql_select_db ("phpmy1_bumblast_com");
        $sorgu="SELECT * from users WHERE username ='$u' AND password ='$p' ";
        $ssql_select = mysql_query($sorgu)or die(mysql_error());
        if(mysql_num_rows($ssql_select)>0)
        {
           echo 'true';
        }else{
           echo 'false'; 
        }      
        mysql_close($con);
 ?>

私の計画は、明らかにこれを「動的」にすることです(var values = $(this).serialize();「js」ファイルにコードを追加し、それらのパラメーターを「my_post_data」として渡します)が、静的データでPHPを正常に呼び出すことさえできません。常に「失敗」機能を実行します。具体的には、「エラー: [オブジェクト オブジェクト]」というメッセージが表示されます。

MAMP 経由でこの種のリクエストを行うことができない場合に備えて、テスト サイトをアップロードしましたが、これも失敗します。

私の「テスト」ページはここに公開されています:

http://www.capitalbecarios.org/phonegap_tests/50login.html

さらに、ここにテスト用の「loginthisGET.php」もあります(実際に正しいユーザー名とパスワードを渡すため、「TRUE」と評価されます):

http://www.capitalbecarios.org/phonegap_tests/js/loginthisGET.php?username=bloc&password=party

「50load-json.js」と「loginthisPOST.php」は、どちらも「50login.html」のある「js」フォルダにあります。

$("#output").html('there is error while submit 1');また、ページが更新されるため、表示されたのに非常に高速に削除されるのはなぜですか?

この無知な魂が悟りを開くのを手伝ってくれませんか?

このメモに注目していただきありがとうございます。

4

2 に答える 2

0

[更新] jQuery を使用しているため、 jQuery.post()の使用を検討してください

$("#myform").submit( function () {
   var my_post_data = $("#myform").serialize(); 
   // Or = "username=bloc&password=party" for testing
   $.post("loginthis.php", my_post_data, function (msg){
       //A callback function for your post
       alert(msg);
   }); 
}
于 2013-03-06T14:03:07.073 に答える
0

return false;送信ハンドラーにa を追加することを検討してください。

$("#myform").submit( function () { 
  var my_post_data = $("#myform").serialize();    
  $.post("loginthisPOST.php", my_post_data)
  .done(function(data) { alert("Data Loaded: " + data);})
  .fail(function(data) { alert("error: " + data); });
  return false;
});    

何が起こっているかというと、2 つの POST 要求が送信されているということです: あなた$.post();と元のフォームの送信です。2 番目のリクエストが開始されると、保留中のすべての XMLHttpRequest がキャンセルされ、それぞれに対して「キャンセル済み」エラーが生成されます (したがって、fail 関数に入ります)。これは、エラー アラートを無視したときにページが更新される理由でもあります。

于 2013-04-09T23:29:51.560 に答える