【发布时间】:2020-08-21 17:37:41
【问题描述】:
这对我来说是一个新领域。
我创建了自定义 JSON 错误输出,以在用户输入已存在的姓名和/或电子邮件时提醒用户。我正在尝试吐出错误,然后如果不存在错误,请继续。 不幸的是,我在 Firefox 控制台中收到以下消息:“未捕获的语法错误:JSON.parse:JSON 数据第 2 行第 1 行的 JSON 数据后出现意外的非空白字符。”这很奇怪,因为我设置了 3 个 JSON 错误变体,它们正在工作(1 个姓名、2 个电子邮件、3 个姓名和电子邮件),但只有当这些条件都不满足时才会失败。
我尽可能地精简了下面的代码。经过多次测试,除上述问题外,其他一切正常。
HTML 表单
<form method='post' id='part03'>
<input type='text' id='name' placeholder='Enter your name'>
<input type='email' id='email' placeholder='Enter your email'>
<input type='button' id='submit'>
</form>
PHP
<?php
header('Content-type: application/json');
// Get name & check if exists
$name = mysqli_real_escape_string($con_usr_pub, $_POST['name']);
$check_name = mysqli_query($con, "select name from table where name='$name'");
if (mysqli_num_rows($check_name) > 0)
{
$name_error = true;
}
else
{
$name_error = false;
}
// Get email & check if exists
$email = mysqli_real_escape_string($con_usr_pub, $_POST['email']);
$check_email = mysqli_query($con, "select email from table where email='$email'");
if (mysqli_num_rows($check_name) > 0)
{
$name_error = true;
}
else
{
$name_error = false;
}
// JSON name error
if ($name_error == true && $email_error == false)
{
$response = "Sorry, the name you entered is already in use.";
}
// JSON email error
if ($name_error == false && $email_error == true)
{
$response = "Sorry, the email you entered is already in use.</p>";
}
// JSON name & email error
if ($name_error == true && $email_error == true)
{
$response = "Sorry, both the name and email you entered are already in use.";
}
// JSON no error
if ($name_error == false && $email_error == false)
{
$response = "continue";
}
echo json_encode($response);
?>
JS
// AJAX - Name & Email
$(document).on('click', '#submit', function() {
var name = $("#name").val();
var email = $("#email").val();
$.ajax({
url: "myserverfile.php",
method: "POST",
data: {
name: name,
email: email
},
dataType: "text",
success: function(response) {
var json = $.parseJSON(response);
if (json === "continue") {
alert("YES");
} else {
alert(json);
}
}
});
});
使用: jQuery 3.4.1 PHP 7.4
【问题讨论】:
-
打开浏览器的开发者工具并查看请求的响应。看看那里有没有奇怪的字符。
标签: javascript php jquery json ajax