意外标记非法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);
});