意外标记非法javascript+;php

意外标记非法javascript+;php,php,javascript,Php,Javascript,以下是源代码: $(document).ready(function(){ $.post("scan.php?dir=<?=$_POST['dir']?>", function(data){ alert(data); }); }); 但它不起作用(谷歌浏览器会在标题中返回错误) 如果我不使用PHP手动添加生成的代码,它就可以工作 有人知道如何修复它吗?您使用的变量包含字符(:,/,…),这些字符不能是U

以下是源代码:

    $(document).ready(function(){

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

            alert(data);

        });

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

如果我不使用PHP手动添加生成的代码,它就可以工作


有人知道如何修复它吗?

您使用的变量包含字符(
/
,…),这些字符不能是URL参数的一部分

$.post("scan.php?dir=<?= urlencode($_POST['dir']) ?>", function(data){
  alert(data);
});
用于将路径转换为可在URL内传递的参数:

$(document).ready(function(){

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

        alert(data);

    });

});
$(文档).ready(函数(){
$.post(“scan.php?dir=“+encodeURI”(”),函数(数据){
警报(数据);
});
});

您需要对参数进行URL编码

$.post("scan.php?dir=<?= urlencode($_POST['dir']) ?>", function(data){
  alert(data);
});
$.post(“scan.php?dir=”,函数(数据){
警报(数据);
});

问题在于反斜杠,您必须像这样对路径进行json编码

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

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

$.post(“scan.php?dir=“+encodeURIComponent”(“”),函数(数据){
警报(数据);
});   

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

您尝试了哪些调试?您是否确定
$\u POST['dir']
实际上是您发布的字符串?我不确定我要说什么,但可能POST或get中的PHP代码没有被解析,因为它们只是字符串,您很容易受到攻击。不要将外部数据注入原始HTML文档。允许使用冒号,但反斜杠需要编码。编辑这两个问题。谢谢
$.post("scan.php?dir=" + encodeURIComponent( "<?=$_POST['dir']?>" ), function(data){
    alert(data);
});