我的代码出错了吗?

时间:2013-11-04 15:41:45

标签: javascript php

我正在为我的学校做一个项目。

这是一个页面源查看器,但我遇到了一个问题..

使用谷歌浏览器,我收到此错误: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行找到冒号(:)。

我做错了什么?

6 个答案:

答案 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"; ?>";