Uncaught SyntaxError: Invalid or unexpected token in ajax call
Uncaught SyntaxError: Invalid or unexpected token in ajax call
我有一个如下所示的表格:
<form id="login_form" class="border shadow p-3 rounded" method="post" style="width: 450px;">
<h1 class="text-center p-3">LOGIN</h1>
<div id="error_box" class="alert alert-danger" role="alert"> </div>
<div class="mb-3">
<label for="username" class="form-label">User name</label>
<input type="text" class="form-control" name="username" id="username">
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" name="password" class="form-control" id="password">
</div>
<button type="submit" class="btn btn-primary">LOGIN</button>
</form>
当我点击登录按钮时,我想检查给定的用户名和密码是否在数据库中。如果是,我想转到另一个页面。如果不是,我将错误消息文本添加到上面的 div,ID 为“error_box”,并使其可见(最初是不可见的)。这是 jquery 代码的样子:
<script>
$(document).ready(function () {
const errorBox = $("#error_box");
errorBox.hide();
$("form").on('submit', function (event) {
errorBox.empty();
$.ajax({
type: "GET",
url: "controller/controller.php",
data: {action: "checkLogin", username: "<?=$_POST['username']?>", password: "<?=$_POST['password']?>"},
success: function (jsonResponse) {
const result = $.parseJSON(jsonResponse)["result"];
if (result === "success") {
window.location.href = "home.php";
} else {
errorBox.show();
errorBox.append(result);
}
}
});
event.preventDefault();
});
})
</script>
controller.php
中的函数 checkLogin
将 return 一个带有一个字段“结果”的 json。如果 username/password 组合正确,它将 return {"result": "success"}。如果 username/password 组合不正确,它将 return {"result": },其中 可以是类似“您不能输入空用户名”。你明白了。
问题是我收到“未捕获的语法错误:无效或意外的标记”。浏览器说它在 ajax 调用中我有 type: "GET"
的那一行。此异常还使 div 的错误消息不会被隐藏,所以我在用户名和密码字段上方有一个空的红色框(它不应该在那里,它应该只出现在用户之后单击无效 username/password 的登录按钮)。如果我删除 ajax 调用,我将不再有异常,并且 div 会被隐藏。我不知道如何解决 it/why 我得到这个异常。我尝试将 ajax 调用中的 dataType
属性指定为 'json'
,但仍然无效。我尝试将 ajax 调用更改为 $.getJSON()
调用,但我遇到了同样的异常(我知道他们做同样的事情,但我越来越绝望了)。怎么了?
您的 ajax 表单中存在 php 语法,问题出在您从输入中获取用户名和密码的那些行中。尝试使用 jquery 或 javascript.
获取输入值
你的脚本应该是这样的
<script>
$(document).ready(function () {
const errorBox = $("#error_box");
errorBox.hide();
$("form").on('submit', function (event) {
errorBox.empty();
$.ajax({
type: "GET",
url: "controller/controller.php",
data: {action: "checkLogin", username: $('#username').val(), password: $('#password').val()},
success: function (jsonResponse) {
const result = $.parseJSON(jsonResponse)["result"];
if (result === "success") {
window.location.href = "home.php";
} else {
errorBox.show();
errorBox.append(result);
}
}
});
event.preventDefault();
});
})
我有一个如下所示的表格:
<form id="login_form" class="border shadow p-3 rounded" method="post" style="width: 450px;">
<h1 class="text-center p-3">LOGIN</h1>
<div id="error_box" class="alert alert-danger" role="alert"> </div>
<div class="mb-3">
<label for="username" class="form-label">User name</label>
<input type="text" class="form-control" name="username" id="username">
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" name="password" class="form-control" id="password">
</div>
<button type="submit" class="btn btn-primary">LOGIN</button>
</form>
当我点击登录按钮时,我想检查给定的用户名和密码是否在数据库中。如果是,我想转到另一个页面。如果不是,我将错误消息文本添加到上面的 div,ID 为“error_box”,并使其可见(最初是不可见的)。这是 jquery 代码的样子:
<script>
$(document).ready(function () {
const errorBox = $("#error_box");
errorBox.hide();
$("form").on('submit', function (event) {
errorBox.empty();
$.ajax({
type: "GET",
url: "controller/controller.php",
data: {action: "checkLogin", username: "<?=$_POST['username']?>", password: "<?=$_POST['password']?>"},
success: function (jsonResponse) {
const result = $.parseJSON(jsonResponse)["result"];
if (result === "success") {
window.location.href = "home.php";
} else {
errorBox.show();
errorBox.append(result);
}
}
});
event.preventDefault();
});
})
</script>
controller.php
中的函数 checkLogin
将 return 一个带有一个字段“结果”的 json。如果 username/password 组合正确,它将 return {"result": "success"}。如果 username/password 组合不正确,它将 return {"result":
问题是我收到“未捕获的语法错误:无效或意外的标记”。浏览器说它在 ajax 调用中我有 type: "GET"
的那一行。此异常还使 div 的错误消息不会被隐藏,所以我在用户名和密码字段上方有一个空的红色框(它不应该在那里,它应该只出现在用户之后单击无效 username/password 的登录按钮)。如果我删除 ajax 调用,我将不再有异常,并且 div 会被隐藏。我不知道如何解决 it/why 我得到这个异常。我尝试将 ajax 调用中的 dataType
属性指定为 'json'
,但仍然无效。我尝试将 ajax 调用更改为 $.getJSON()
调用,但我遇到了同样的异常(我知道他们做同样的事情,但我越来越绝望了)。怎么了?
您的 ajax 表单中存在 php 语法,问题出在您从输入中获取用户名和密码的那些行中。尝试使用 jquery 或 javascript.
获取输入值你的脚本应该是这样的
<script>
$(document).ready(function () {
const errorBox = $("#error_box");
errorBox.hide();
$("form").on('submit', function (event) {
errorBox.empty();
$.ajax({
type: "GET",
url: "controller/controller.php",
data: {action: "checkLogin", username: $('#username').val(), password: $('#password').val()},
success: function (jsonResponse) {
const result = $.parseJSON(jsonResponse)["result"];
if (result === "success") {
window.location.href = "home.php";
} else {
errorBox.show();
errorBox.append(result);
}
}
});
event.preventDefault();
});
})