我正在为我的学校做一个项目。
这是一个页面源查看器,但我遇到了一个问题..
使用谷歌浏览器,我收到此错误:Uncaught SyntaxError: Unexpected token : main.php:10
HTML :
<html>
<head>
<title>Codeview - See how your code turns out!</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<script>
var url = <?php echo "$url"; ?>
var oReq = new XMLHttpRequest();
oReq.open("GET", url, true);
console.log(oReq.response);
</script>
<div id="header">
<h2>Codeview</h2>
</div>
<div id="main">
<br>
<h3>Code of <?php echo $url;?>:</h3>
<hr>
<div id="code">
</div>
<iframe id="Code" class="code"></iframe>
</div>
</body>
</html>
PHP :
<?php
function contains($needle, $haystack)
{
return strpos($haystack, $needle) !== true;
}
$url = $_POST['url'];
if (strpos($url, "http://") !== false) {
$url = $url;
} else {
$url = "http://" . $url;
}
?>
我无法在代码中的第10行找到冒号(:)。
我做错了什么?
答案 0 :(得分:9)
这:var url = <?php echo "$url"; ?>
将输出如下内容:
var url = http://example.com
需要引用JavaScript中的字符串。您也容易受到XSS攻击。
使用json_encode
将PHP字符串转换为JavaScript字符串。
不依赖于分号插入也是一种好习惯。
var url = <?php echo json_encode("$url"); ?>;
答案 1 :(得分:2)
您需要在JavaScript中围绕字符串引用。
var url = <?php echo "$url"; ?>
这呈现为:
var url = http://google.com
这是一个语法错误!试试这个:
var url = <?php echo json_encode($url); ?>;
这会为你添加引号。
答案 2 :(得分:1)
在JS代码中打印到变量声明时需要使用引号:
var url = "<?php echo $url; ?>";
但请勿使用此代码!它易受cross-site scripting攻击。要在javascript上下文中转义URL,请使用json_encode
:
var url = <?php echo json_encode($url); ?>; /* this one is safe */
答案 3 :(得分:1)
作为第一步,您应该为js var
添加引号var url = '<?php echo "$url"; ?>';
答案 4 :(得分:1)
改变这个:
var url = <?php echo "$url"; ?>
到此:
var url = '<?php echo "$url"; ?>';
答案 5 :(得分:-2)
尝试在此行的末尾添加分号,并将PHP代码包装在引号中:
var url = "<?php echo "$url"; ?>";