【发布时间】:2019-02-24 15:51:12
【问题描述】:
当我在 JavaScript 中使用 PHP 时,所有脚本都不起作用... 即使我在评论中使用 php。
<script>
//var variable = <?php echo json_encode($_SESSION['abc']); ?>;
</script>
上面的这条评论破坏了<script></script>标签中的所有脚本。
当我用评论删除这一行时,每个脚本都会起作用。
同样的事情是当我只想在 JavaScript 中使用 PHP(不加注释)。
你能帮帮我吗?
这是我剪掉的代码(只给你必要的部分代码),请帮忙:) :
<?php
session_start();
if (isset($_POST['login']) && isset($_POST['password']) && isset($_POST['email']))
{
$validation = true;
$firstName = $_SESSION['firstName'];
$lastName = $_SESSION['lastName'];
$street = $_SESSION['street'];
$phone = $_SESSION['phone'];
$login = $_POST['login'];
$password = $_POST['password'];
$email = $_POST['email'];
require_once "connect.php";
mysqli_report(MYSQLI_REPORT_STRICT);
try
{
$connection = new mysqli($host, $db_user, $db_password, $db_name);
if($connection->connect_errno!=0)
{
throw new Exception(mysqli_connect_errno());
}
else
{
if ($validation == true) // when validation process will be successfuly done - i cut validation process
{
if($connection->query("INSERT INTO users values (NULL, '$firstName', '$lastName', '$street', '$phone', '$login', '$password', '$email')"))
{
$_SESSION['abc'] = "done";
//here is also header(location) to login page
}
else
{
throw new Exception($connection->error);
}
}
$connection->close();
}
}
catch(Exception $e)
{
echo '<div class="error">error. sorry, please to register in other term</div>';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script>
//there are other functions for local/session storage
function deleteSessionData()
{
var variable = "<?php echo $_SESSION['abc']; ?>";
if(variable == "done")
{
sessionStorage.removeItem('firstName');
sessionStorage.removeItem('lastName');
sessionStorage.removeItem('street');
sessionStorage.removeItem('phone');
sessionStorage.removeItem('login');
sessionStorage.removeItem('password');
sessionStorage.removeItem('email');
}
}
</script>
</head>
<body>
<form id="myForm" method="post">
<label for="login">Login: </label>
<input type="text" id="login" name="login">
<label for="password">Password: </label>
<input type="text" id="password" name="password">
<label for="email">E-mail:</label>
<input type="email" id="email" name="email">
<button onclick="java script: document.getElementById('myForm').submit();deleteSessionData();">Register</button>
</form>
</div>
</body>
</html>
【问题讨论】:
-
//var variable = "";
-
我看不出这最终会如何创建无效的 JS。您无法向
json_encode提供任何输入,这会导致输出中出现换行符(不使用漂亮打印),因此这应该始终作为 JS 源代码中的单行注释结束。$_SESSION['abc']中的实际内容是什么? -
其实我不想评论这一行。我只是想知道为什么即使有评论它仍然会“破坏”我的脚本。我在第一个问题下写了另一个答案:P
-
你打开
display_errors了吗?如果$_SESSION['abc']未定义,那么它会发出通知,如果您将其回显到页面,那么它会破坏您的脚本。无论如何,除非您向我们展示此代码实际生成的源代码,否则我们很难为您提供帮助。 -
我想我没有打开这个选项。好的,我将删除代码中不必要的部分并将其发送到这里。谢谢
标签: javascript php comments