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);

        });

    });

しかし、それは機能しません (Google Chrome はタイトルでエラーを返します)。

生成されたコードを 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

他の回答が言うように、 yourURL パラメータを適切にエンコードする必要があります。そのために、次を使用できますencodeURIComponent

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

エラーの原因は、エンコードされていないバックスラッシュです。URL に\xは、特殊な 16 進数のエスケープ シーケンス マークである が含まれています。次の 2 文字は有効な 16 進数 (つまり、[0-9a-fA-F]) であると想定されます。そうでない場合、エラーが発生します。

于 2012-11-21T12:29:39.437 に答える