我正在尝试向数据库提交一个php表单,但我希望当我点击提交按钮时页面会刷新(无需转到我提交的php页面)。我知道我必须使用JS来做这件事,并且我尝试了许多不同的方法而没有任何成功。我正在使用三个文件,一个用于表单,一个用于JS,最后一个用于将数据发布到数据库中。我是php和JS的新手,非常欢迎任何帮助,谢谢。
PD这是我到目前为止的代码:
user.php的
<head>
........
<!-- Javascripts -->
<!-- jQuery -->
<script type="text/javascript" src="resources/scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="resources/scripts/newuser.form_jquery.js"></script>
</head>
<body>
...................................
......................................
......................................
<form action="" id="newuserform" method="post">
<h4>New user</h4>
<br /><br />
<fieldset class="column-left">
<p>
<label>Email</label>
<input class="text-input medium-input" type="text" id="email" name="email" />
<br />
</p>
<p>
<label>First name</label>
<input class="text-input medium-input" type="text" id="fname" name="fname" />
<br />
</p>
</fieldset>
<fieldset class="column-right">
<p>
<label>Password</label>
<input class="text-input medium-input" type="password" id="pwd" name="pwd" />
<br />
</p>
<p>
<label>Last Name</label>
<input class="text-input medium-input" type="text" id="lname" name="lname" />
<br />
</p>
</fieldset>
<p>
<input class="button" type="button" value="Create" id = "submit_btn"/>
</p>
<div id="errormsg" class="notification error png_bg">
<div>
Invalid login, please check your username and password!
</div>
</div>
</form>
</body>
newuser.form_jquery.js
$(document).ready(function() {
$("#errormsg").hide();
$("#newuserform").keypress(function(e){
if(e.which == 13){
$("#errormsg").hide();
jQuery('#submit_btn').focus().click();
e.preventDefault();
return false;
}
});
$("#submit_butn").click( function() {
var e = '#email';
var p = '#pwd';
var f = '#fname';
var l = '#lname';
var _e = $(e).val();
var _p = $(p).val();
var _f = $(f).val();
var _l = $(l).val();
var postFile = 'application/post.newuser.php';
var dataurl = 'users';
$.post(postFile, { e: _e, p: _p, f: _f, l: _l}, function(data) {
if(data.status==true){
window.location=dataurl;
} else {
$("#errormsg").show();
}
}
,'json');
});
});
post.newuser.php *
public function newuser($e, $p, $f, $l)
{
//e: email, p: password, f: first_name, l: last_name
$return = false;
$sql = "INSERT INTO users (email, password, first_name, last_name, role, enabled)";
$sql .= " VALUES (";
$sql .= "'".$e."', ";
$sql .= "'".SHA1($p)."', ";
$sql .= "'".$f."', ";
$sql .= "'".$l."', ";
$sql .= "'2', ";
$sql .= "'1' ";
$sql .= ")";
$mysql = new mysql();
$mysql->connect();
$q = $mysql->queryin($sql);
if ($q)
{
$return = true;
}
$mysql->end();
return $return;
}
很抱歉这篇长篇文章。
答案 0 :(得分:1)
当你想在后台做某事时,你必须使用AJAX,因此JavaScript中的XMLHttpRequest对象可以为你提供帮助。你必须重建已经拥有的使用AJAX的东西。这很简单。 转到http://www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp并阅读那里的内容。你需要大约10分钟才能理解。
答案 1 :(得分:1)
页面刷新回原因的原因是您没有停止浏览器提交表单的默认行为。这是我建议做的。
$("#newuserform").submit(function(event) {
// handle processing
// stop the form from submitting since you used Ajax to submit
event.preventDefault();
});
我认为更好的编码实践是将JS代码绑定到提交方法而不是单击。
此外,虽然您可以对已保存的密码进行哈希处理,但您仍然可以SQL Injections。 mysql_real_escape_string()是你的朋友。 :)
答案 2 :(得分:0)
如果要将信息发送到数据库并重新加载页面,则不需要JavaScript。只需在PHP文档中添加一个if语句,看看是否设置了$ _POST [],并确保通过action属性将数据提交到当前页面。
答案 3 :(得分:-3)
尝试ajax //在php中执行你要做的事情并将你的值作为json_decode($ yourvariable)返回 //所有json_decode都会将输出转换为数组格式。以便下面的函数可以读取它。
$.get("ajax.php", { id: hash }, //equivalent to ajax.php?id=hash
function(out)
{
}, "json");
看看我在我的网站上如何使用它: http://iadprint.com/products?product=product%201 (查看来源并滚动到底部)