3

我被困住了 2 周,因为我决定使用基于 jquery 库的不错的三视图。我的问题是我试图将选定文件夹的值作为 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>"; 
?>

我会继续努力,现在我至少有机会获得一些帮助,以避免多花一周时间:)。

4

4 回答 4

2

来自$.ajax上的 jquery 网站。

默认情况下,Ajax 请求使用 GET HTTP 方法发送。如果需要 POST 方法,可以通过设置 type 选项的值来指定该方法。此选项影响数据选项的内容如何发送到服务器。根据 W3C XMLHTTPRequest 标准,POST 数据将始终使用 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

解决方案是

{
    $("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 再一次(不需要)。它还提供了我认为的网站 url,而不是根 (/)(不需要)+来自文件系统的网页上的可见路径(需要)。

这可以通过 php 中的正则表达式来解决,但我将首先尝试通过使用这个 jQuery 函数只获取想要的东西来使其更干净。

将我几乎完成的解决方案留在这里只是为了在需要时提示那里开始。

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

感谢您的所有帮助并带领我走上正确的道路@Frank B、@jeroen 和 @Zim84

于 2013-03-18T21:24:19.423 回答
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 回答