意外的令牌ILLEGAL javascript + php

时间:2012-11-21 12:05:31

标签: php javascript

以下是源代码:

    $(document).ready(function(){

        $.post("scan.php?dir=<?=$_POST['dir']?>", function(data){

            alert(data);

        });

    });

生成的代码是:

    $(document).ready(function(){

        $.post("scan.php?dir=C:\xampp\htdocs\windowsMedias\music", function(data){

            alert(data);

        });

    });

但它不起作用(谷歌浏览器会在标题中返回错误)。

如果我手动添加生成的代码,没有PHP,它就可以工作。

有人知道如何修复它吗?

4 个答案:

答案 0 :(得分:4)

您使用的变量包含字符(:/,...),这些字符不能是网址参数的一部分。

使用encodeURI()将您的路径转换为可在URL中传递的参数:

$(document).ready(function(){

    $.post("scan.php?dir=" + encodeURI( "<?=$_POST['dir']?>" ), function(data){

        alert(data);

    });

});

答案 1 :(得分:1)

您需要对参数进行urlencode。

$.post("scan.php?dir=<?= urlencode($_POST['dir']) ?>", function(data){
  alert(data);
});

答案 2 :(得分:0)

问题在于反斜杠,你必须像这样对你的路径进行json_encode

$(document).ready(function(){
    $.post("scan.php?dir=C:\xampp\\htdocs\\windowsMedias\\music", function(data){
        alert(data);
    });
});

答案 3 :(得分:0)

正如其他答案所说,您必须正确编码您的URL参数。为此,您可以使用encodeURIComponent

$.post("scan.php?dir=" + encodeURIComponent( "<?=$_POST['dir']?>" ), function(data){
    alert(data);
});   

造成错误的原因是未编码的反斜杠。您的URL包含\x,这是一个特殊的十六进制转义序列标记。它希望以下两个字符是有效的十六进制数字(即[0-9a-fA-F]),否则会导致错误。