我会尝试尽可能具有描述性。对不起,如果太多了。
我有一个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”都位于“50sin.html”所在的“js”文件夹中。
另外,为什么如果我$("#output").html('there is error while submit 1');
它显示它,但然后很快删除它,因为它刷新页面?
你能帮助这个无知的灵魂获得启蒙吗?
感谢您关注本说明。
答案 0 :(得分: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);
});
}
答案 1 :(得分: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();
和原始表单的提交。当第二个请求开始时,它会取消所有挂起的XMLHttpRequests,为每个请求生成“已取消”错误(从而进入失败函数)。这也是您在解除错误警报时看到页面刷新的原因。