2

这是源代码:

    $(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

4 回答 4

4

您使用的变量包含字符 ( :, /, ...),不能作为 URL 参数的一部分。

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

$(document).ready(function(){

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

        alert(data);

    });

});
于 2012-11-21T12:08:53.863 回答
1

您需要对参数进行 urlencode。

$.post("scan.php?dir=<?= urlencode($_POST['dir']) ?>", function(data){
  alert(data);
});
于 2012-11-21T12:10:34.977 回答
0

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

$(document).ready(function(){
    $.post("scan.php?dir=C:\xampp\\htdocs\\windowsMedias\\music", function(data){
        alert(data);
    });
});
于 2012-11-21T12:16:48.700 回答
0

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

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

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

于 2012-11-21T12:29:39.437 回答