0

我会尽量做到描述性。对不起,如果它太多了。

我有一个 HTML 文件,带有一个简单的登录表单,链接 jquery 和我的个人脚本:

 <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,它连接到我的数据库并执行查询以匹配用户名和密码。

我的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。它总是执行“失败”功能。更具体地说,它给了我这些消息“错误:[object Object]”。

我上传了我的测试站点,以防我无法通过 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;在提交处理程序中添加一个:

$("#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;
});    

发生的事情是发送了两个 POST 请求:您的$.post();和原始表单的提交。当第二个请求开始时,它会取消所有挂起的 XMLHttpRequest,为它们中的每一个生成一个“已取消”错误(从而进入失败函数)。这也是您在关闭错误警报时看到页面刷新的原因。

于 2013-04-09T23:29:51.560 回答