3

jquery ライブラリに基づく素敵な threeview を使用することにしたので、2 週間もの間行き詰まっています。私の問題は、選択したフォルダーの値を変数としてphpに取得しようとしていることです。

値を取得して Jquery の Alertbox を介して表示することはできますが、値は PHP 変数にポストされません。echo は何も表示しません。

以下のテキストは、このソリューションをphpなどで使用する必要がある理由を明確にするためのものです。

その後、これは解決され、後でbashスクリプトに送信するパス全体を取得するのに苦労し続けます。既に完了して動作している SQL データベースの flac または mp3 アルバムからメタタグを含むテキスト ファイルを作成します。このアプリは、データベースのメンテナンスのためにローカルです。

私の問題とコードに(jqueryとajaxが私にとってまったく新しいものであることに注意してください)

ファイル名: file_browser.php Jquery 部分

<script>
$(document).ready(function()
{
    $("button").click(function()
    {
        var dir = ($(".active").text())
        $.ajax({
            type: "POST",
            url:"file_browser.php",
            data: dir,
            success: function(data){ 
            alert(dir); dir }
        });
    });
});
</script>

PHP コード

<?php
    echo "<form>
          <button>Append</button>
          <div id'japp'>";
    if (isset($_POST['dir'])) {
        $dir = $_POST['dir']; }
        echo $dir;
       echo "</div> 
              </form>"; 
?>

私は努力を続けます。少なくとも、これにもう 1 週間かかるのを避けるための助けを得るチャンスがあります :)。

4

4 に答える 4

2

$.ajaxの jquery Web サイトから。

デフォルトでは、Ajax リクエストは GET HTTP メソッドを使用して送信されます。POST メソッドが必要な場合は、type オプションの値を設定することでメソッドを指定できます。このオプションは、データ オプションの内容がサーバーに送信される方法に影響します。POST データは、W3C XMLHTTPRequest 標準に従い、常に UTF-8 文字セットを使用してサーバーに送信されます。

data オプションには、key1=value1&key2=value2 の形式のクエリ文字列、または {key1: 'value1', key2: 'value2'} の形式のオブジェクトを含めることができます。後者の形式を使用する場合、データは送信前に jQuery.param() を使用してクエリ文字列に変換されます。この処理は、processData を false に設定することで回避できます。XML オブジェクトをサーバーに送信する場合、この処理は望ましくない場合があります。この場合、contentType オプションを application/x-www-form-urlencoded からより適切な MIME タイプに変更します。

$(".active").text() の値は、キーをペアにせずに渡したい値にすぎないと想定しています。上記のようにキーと値のペアで文字列をフォーマットすると、うまくいくはずです。

于 2013-03-07T19:27:27.350 に答える
1

$_POST配列に要素を含める必要がある場合はdir、キーと値のペアをスクリプトに送信する必要があります。

var dir = { "dir": $(".active").text() };
于 2013-03-07T19:26:22.373 に答える
0

これを試してみてください:

<script>
$(document).ready(function()
{
    $("button").click(function()
    {
        // setting a key-value
        var dir = { dir: $(".active").text() };
        $.ajax({
            type: "POST",
            url:"file_browser.php",
            data: dir,
            success: function(data){ 
            alert(dir);} //removed the second 'dir'
        });
    });
});
</script>
于 2013-03-07T19:31:25.460 に答える
0

解決策は

{
    $("button").click(function()
    {
        var dir = ($(".active").text()); // from my question (gives name of selected dir)
        $.ajax({
            type: "POST",
            url: "file_browser.php",
            data: { dir: "dir" },
            success: function(response){ // function(response) was (data)
            $('#japp').html(dir);        // points to the forms id="japp"
            alert(dir); }
        });
    });
});

上記の質問は解決しました。

私の他の言及された問題は、ディレクトリだけでなくフルパスを取得することです。部分的に解決しました。

穴のパスを dir (必要) + もう一度 dir (不要) の文字列として指定します。また、ルート(/)(不要)+ファイルシステムからのWebページ上の可視パス(必要)の代わりに私が思うWebサイトのURLも提供します。

これはphpの正規表現で解決できますが、最初にこのjQuery関数で必要なものだけを取得して、よりきれいにしようとします.

必要に応じて開始するためのヒントを提供するために、ほぼ完了したソリューションをここに残しました。

var dir = ($(".active").parent('li').text());

すべての助けと、私を正しい道に導いてくれてありがとう@Frank B、@jeroen & @Zim84

于 2013-03-18T21:24:19.423 に答える