如何使用JavaScript在后台运行PHP
我试图向数据库提交一个php表单,但我希望当我单击submit按钮时,页面会自动刷新(无需转到我提交的php页面)。我知道我必须使用JS来实现这一点,我已经尝试了很多不同的方法,但都没有成功。我使用了三个文件,一个用于表单,一个用于JS,最后一个用于将数据发布到数据库中。我是php和JS新手,欢迎任何帮助,谢谢 PD以下是我目前掌握的代码: user.php如何使用JavaScript在后台运行PHP,php,javascript,mysql,html,forms,Php,Javascript,Mysql,Html,Forms,我试图向数据库提交一个php表单,但我希望当我单击submit按钮时,页面会自动刷新(无需转到我提交的php页面)。我知道我必须使用JS来实现这一点,我已经尝试了很多不同的方法,但都没有成功。我使用了三个文件,一个用于表单,一个用于JS,最后一个用于将数据发布到数据库中。我是php和JS新手,欢迎任何帮助,谢谢 PD以下是我目前掌握的代码: user.php <head> ........ <!-- Javasc
<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>
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;
}
很抱歉写了这么长的文章。如果您想将信息发送到数据库并重新加载页面,则不需要JavaScript。只需在PHP文档中添加一条if语句,查看是否设置了$\u POST[],并确保通过的action属性将数据提交到当前页面。试试ajax //在php中,做您想做的事情,并以json_decode($yourvariable)的形式返回您的值 //json_解码所做的就是将输出转换为数组格式。以便下面的函数可以读取它
$.get("ajax.php", { id: hash }, //equivalent to ajax.php?id=hash
function(out)
{
}, "json");
查看我是如何在我的网站上使用此功能的:
(查看源代码并滚动到底部)当您想在后台执行某些操作时,必须使用AJAX,这样JavaScript中的XMLHttpRequest对象将为您提供更好的服务。您必须重新构建已经使用AJAX的内容。这很简单。
去看看那里有什么。您需要大约10分钟才能理解。页面刷新回自身的原因是您没有停止浏览器提交表单的默认行为。以下是我的建议
$("#newuserform").submit(function(event) {
// handle processing
// stop the form from submitting since you used Ajax to submit
event.preventDefault();
});
我认为把JS代码绑定到提交方法而不是点击,这是更好的编码实践。
此外,虽然对保存的密码进行哈希运算是件好事,但您可以完全接受。mysql\u real\u escape\u string()是您的朋友。:) 嗯?为什么你会推荐md5()而不是sha1()?这是一个长期的争论。我不想谈细节。但在对密码进行哈希运算之前,您绝对应该先对其进行加密。我可以带你去好的维基百科吗?MD5是比SHA-1更弱的加密算法。这只是一个事实,没有什么值得争论的。它们都坏了,没有盐也没用。我很好奇为什么你会推荐一个较弱的算法,而不是
bcrypt
或其他什么。我猜我是盲目地接受了别人告诉我的。有人告诉我md5()比sha1()好。通过快速的谷歌搜索,我发现我错了。哈哈。谢谢你让我意识到这一点。:)编辑。
$("#newuserform").submit(function(event) {
// handle processing
// stop the form from submitting since you used Ajax to submit
event.preventDefault();
});