以下是源代码:
$(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,它就可以工作。
有人知道如何修复它吗?
答案 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]
),否则会导致错误。