我正在建立一个网站,并将PHP
和Javascript
合并到该网站中。我要使用该网站做的是使用一个界面,该界面可以使用户在某种意义上“登录”,然后存储通过使用cookies
输入的信息。我正在尝试使用php调用外部js函数,但是由于某些原因,尽管脚本标记已根据需要添加到html文档中,但该函数根本没有被调用,并且无法弄清楚为什么或如何修复它。我在下面附加了部分代码。预先非常感谢。
我的PHP代码:
<?php
$fail="";
$success="";
if (isset($_POST['submit'])) {
echo "<script>console.log('Submitted');</script>";
$first=$_POST["first"];
$last=$_POST["last"];
$city=$_POST["city"];
if ($first!="test"||$last!="test"||$city!="test"){
$fail="This is an error message";
}
else{
echo "<script>console.log('This is working from html');</script>";
$success= "<script src='main.js'>
console.log('success variable is working');
createCookie('first',$first);
createCookie('last',$last);
createCookie('city',$city);
</script>
<script>
console.log("Hello World!");
</script>";
}
}
?>
我的HTML部分:
<div id="container">
<?=$fail?>
<form action="" method="POST">
<p>Enter Family Name (as it appears on your invitation): </p>
<input class="entry" type="text" name="first" placeholder="FIRST NAME" required><br><br>
<input class="entry" type="text" name="last" placeholder="LAST NAME" required><br><br>
<input class="entry" type="text" name="city" placeholder="CITY (ONLY)" required><br><br>
<input name="submit" type="submit" style="margin:auto; display:block">
</form>
<?=$success?>
JavaScript代码:
function createCookie(name,value){
document.cookie=name+"="+value;
console.log("This is working");
console.log(document.cookie);
console.log("This is too");
}
function getCookie(name){
var split=document.cookie.split(";");
for (let i=0;i<split.length;i++){
if (split[i].indexOf(name)===0){
return split[i].substring(name.length+1);
}
}
}
答案 0 :(得分:1)
这部分代码在网络浏览器中造成了行为冲突(您在同一src
标签中同时拥有code
和script
)
$success= "<script src='main.js'>
console.log('success variable is working');
createCookie('first',$first);
createCookie('last',$last);
createCookie('city',$city);
</script>";
您应该通过简单地制作第二个script
标签(将它们拆分)来更改此设置:
$success= "<script src='main.js'></script>
<script>
console.log('success variable is working');
createCookie('first',$first);
createCookie('last',$last);
createCookie('city',$city);
</script>";
这样,src
不会否定script标记的任何代码内容。
第二,您还应该在这些js函数调用中引用从php添加的字符串。像这样:
$success= "<script src='main.js'></script>
<script>
console.log('success variable is working');
createCookie('first',". json_encode($first) .");
createCookie('last',". json_encode($last) .");
createCookie('city',". json_encode($city) .");
</script>";
此处使用json_encode
是为了确保可以安全地传递值并且不会破坏脚本。