Javascript 未捕获的语法错误:意外标记<;
我明白了 编辑这里是登录php页面,如果您需要javascript,请告诉我。您是否认为这比设置标准表单和页面更有效:Javascript 未捕获的语法错误:意外标记<;,javascript,ajax,Javascript,Ajax,我明白了 编辑这里是登录php页面,如果您需要javascript,请告诉我。您是否认为这比设置标准表单和页面更有效: var json = jQuery.parseJSON(data); 从jQuery 1.9开始,将抛出JavaScript错误,而不是返回null。因此,您的json无法显示该错误 从jQuery文档: 在jQuery 1.9之前,$.parseJSON返回null,而不是在传递空字符串、null或未定义时抛出错误,即使这些字符串不是有效的JSON 要防止JS抛出错误,请执
var json = jQuery.parseJSON(data);
从jQuery 1.9开始,将抛出JavaScript错误,而不是返回null
。因此,您的json无法显示该错误
从jQuery文档:
在jQuery 1.9之前,$.parseJSON返回null,而不是在传递空字符串、null或未定义时抛出错误,即使这些字符串不是有效的JSON
要防止JS抛出错误,请执行以下操作:
<?php
require("./../config.php");
if (!isset($_POST['req']))
{
die("No request provided.");
}
else
{
if ($_POST['req'] == "login")
{
$json = array("success"=>false, "msg"=>"", "req"=>"login");
if (!isset($_POST['user']) || empty($_POST['user']))
{
$json['success'] = false;
$json['msg'] = "No user provided";
}
else
{
if (!isset($_POST['pass']) || empty($_POST['pass']))
{
$json['success'] = false;
$json['msg'] = "No password provided";
}
else
{
$user = mysql_real_escape_string($_POST['user']);
$password = mysql_real_escape_string($_POST['pass']);
$password = hash("sha512", $password);
$query = mysql_query("SELECT `id` FROM `users` WHERE `username` = '" . $user . "' AND `password` = '" . mysql_real_escape_string($password) . "' LIMIT 1");
if (mysql_num_rows($query))
{
$sessID = mysql_real_escape_string(session_id());
$hash = mysql_real_escape_string(hash("sha512", $sessID.$_SERVER['HTTP_USER_AGENT']));
$userData = mysql_fetch_assoc($query);
$expires = time() + (60 * 15);
mysql_query("INSERT INTO `active_users` (`user`, `session_id`, `hash`, `expires`) VALUES (" . (int) $userData['id'] . ", '" . $sessID . "', '" . $hash . "', " . $expires . ")");
$json['success'] = true;
$json['msg'] = "Logged in";
}
else
{
$json['success'] = false;
$json['msg'] = "Username or password are incorrect.";
}
}
}
print(json_encode($json));
}
}
?>
附言:发布你的JSON,让我们知道问题出在哪里。您可以通过添加console.log(数据)在之前尝试(如果您使用我的代码)。正在解析的数据看起来像…?将您的代码与JSON数据一起发布到此处。显然数据不是有效的JSON。什么是console.log(数据)代码>显示?听起来好像数据
可能是从web服务器发送的基于HTML的错误页面,而不是您真正想要的json资源。正如其他人所说,将您要返回的数据发布。我看到过这种类型的错误,因为服务器返回404或500错误页面,ajax调用试图解析返回的HTML,而它希望返回JSON。
<?php
require("./../config.php");
if (!isset($_POST['req']))
{
die("No request provided.");
}
else
{
if ($_POST['req'] == "login")
{
$json = array("success"=>false, "msg"=>"", "req"=>"login");
if (!isset($_POST['user']) || empty($_POST['user']))
{
$json['success'] = false;
$json['msg'] = "No user provided";
}
else
{
if (!isset($_POST['pass']) || empty($_POST['pass']))
{
$json['success'] = false;
$json['msg'] = "No password provided";
}
else
{
$user = mysql_real_escape_string($_POST['user']);
$password = mysql_real_escape_string($_POST['pass']);
$password = hash("sha512", $password);
$query = mysql_query("SELECT `id` FROM `users` WHERE `username` = '" . $user . "' AND `password` = '" . mysql_real_escape_string($password) . "' LIMIT 1");
if (mysql_num_rows($query))
{
$sessID = mysql_real_escape_string(session_id());
$hash = mysql_real_escape_string(hash("sha512", $sessID.$_SERVER['HTTP_USER_AGENT']));
$userData = mysql_fetch_assoc($query);
$expires = time() + (60 * 15);
mysql_query("INSERT INTO `active_users` (`user`, `session_id`, `hash`, `expires`) VALUES (" . (int) $userData['id'] . ", '" . $sessID . "', '" . $hash . "', " . $expires . ")");
$json['success'] = true;
$json['msg'] = "Logged in";
}
else
{
$json['success'] = false;
$json['msg'] = "Username or password are incorrect.";
}
}
}
print(json_encode($json));
}
}
?>
try {
var json = $.parseJSON(data);
//if code below here runs, means json is valid
} catch(e){
//if code below here runs, means json is invalid
}