【发布时间】:2016-12-18 12:23:49
【问题描述】:
我尝试了here (How to Pass Variables and Data From PHP to JavaScript)和here (Submit Form Without Reloading Using jQuery AJAX)中的所有解决方案。
我想要完成的是,当我提交表单时,它会被发送到 .php 文件,而用户不会被重定向到 .php 文件或网站重新启动。
然后我希望 PHP 返回一个值,表明注册成功或失败(例如用户名太长或电子邮件不正确)。
我已经坚持了两天了,我一直在尝试多种解决方案,包括将 PHP 和 HTML 代码放在同一个文件中,并以某种方式在提交时运行 PHP 函数(它会显示错误使用 echo 和 script 标签的消息)。
HTML/JS 代码:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
var oReq = new XMLHttpRequest();
function reqListener() {
console.log(this.responseText);
}
$('#register').submit(function () {
oReq.onload = function () {
alert(this.responseText);
};
oReq.open("post", "registeruser.php", true);
oReq.send();
});
</script>
</head>
<body>
<form id="register" method="post" accept-charset="UTF-8">
Username:<br>
<input type="text" name="u_username" id="id_username" required><br>
First Name:<br>
<input type="text" name="u_first" id="id_first" required><br>
Last Name:<br>
<input type="text" name="u_last" id="id_last" required><br>
<input type="submit" value="SUBMIT!">
</form>
</body>
</html>
PHP 代码:
<?php
echo "Starting<br>";
submitRegister();
function submitRegister() {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(E_ALL);
ini_set('display_errors',1);
function displayAlert($message) {
echo $json_encode($message);
die();
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['u_username'];
$pwd = $_POST['u_firstname'];
$pwdconfirm = $_POST['u_lastname']);
// And here go tons of other things like sql/validation/sanitization etc.
displayAlert("Done.");
}
else {
displayAlert("Failed.");
}
?>
是的,我知道 AJAX 代码非常糟糕且无效,尽管我似乎无法找出原因。
【问题讨论】:
-
您已经在加载 jQuery - 为什么不使用 jQuery 的 $.post-method(或者只是 $.ajax)?而不是使用常规的 js ajax。
-
使用 jQuery 让您的生活更轻松。
标签: php jquery ajax forms php-7