代码之家  ›  专栏  ›  技术社区  ›  Benji

jQuery到PHP再返回!

  •  1
  • Benji  · 技术社区  · 14 年前

    我想将内容从PHP来回传递到jQuery,反之亦然。我不确定我是否完全理解最好的方法去做这件事,并希望得到一些最好的建议和澄清。

    下面是一个我正在尝试做的事情的例子。PHP列出目录中的文件(其路径从jQuery传递给它),将它们存储在一个数组中,然后将它们传递回jQuery。我想将数组中的值用于各种目的,但实际上我只想了解在这两个数组之间来回传递信息,不管它是来自数组还是普通变量。 谢天谢地!


    $files = array();
    $dir = ($_POST['dir']);
    $count = 0;
    
    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != ".." && strpos($file, '.jpg',1)) {$count++;
                $files[$file] = $file;
            }
        }
        closedir($handle);
    }
        echo json_encode($files);
    ?>
    

    jQuery:

    $(document).ready(function(){
    
        $('a').click( function(e) {
            e.preventDefault();
    
            $.post("php.php", 'path/to/directory/',
                function(data) {
                    alert(data);
            }, "json");
        });
    
    });
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   Community CDub    4 年前

    如果我正确地阅读了您的问题,那么您并不是真的在寻找关于这个特定代码的提示,而是更多关于在PHP和jQuery之间来回传输数据的过程的注释。让我们简单地看一下JSON本身,然后看一下通信的每一面。

    JSON文件

    http://www.json.org/ 但基本上可以归结为:

    • { } 人物
    • 数据格式为 string : value ,其中 string
    • 一串 格式为 " / " ,然后是另一个引用
    • value 可以是另一个字符串、一个数字、一个完整的数据对象、一个布尔值或上述某组值的数组
    • 数组的格式为 [ ,后跟逗号分隔的值列表,后跟 ]

    菲律宾比索

    在php方面,您将收到一个页面请求,并使用附加的参数来决定如何处理该页面。对于JSON应用程序,这意味着将数据加载到数组中,然后 json_encode() 函数将该数组转换为JSON格式。如果您手动将JSON创建为字符串,那么应用程序的其余部分的工作方式将是相同的,尽管这显然会为您在PHP代码中进行更多的工作。因此,helper函数:)

    在jQuery方面,调用 $.post() 发出AJAX请求,从服务器检索页面。在这种情况下,您将向发送请求 php.php

    中的第二组参数 $.post() 调用是一组参数,这些参数应包括 后跟逗号分隔的集合:标签、冒号、值。指定所有参数后,请使用 } . 请注意,尽管这类似于JSON字符串,但它不是JSON。标签周围没有JSON所要求的引号。但是,任何字符串值都需要引号。

    $.post() call是一个函数,它将自动应用于从页面请求接收的数据。函数的结果会自动加载到您在函数定义中指定的任何变量中,并且您可以在函数中使用这些数据,非常随意。在您的示例中,您只需将数据发送到一个警报框,但您可以用它做更多的事情。实际上,您可以将其解析为一个JSON集合,并根据JSON中各个组件的内容执行各种操作(这最终意味着您直接对原始php数组中的各个值执行操作)。

    上的第四个参数 call是数据类型。它不是必需的,但是如果您想访问json集合而不仅仅是一个字符串,则需要使用它。使用它,您可以通过简单地包括 "json" . 如果这样做了,就可以通过引用JSON集合的标签,直接在第三个参数函数中访问JSON集合的元素。

    下面是一个完整的JSON示例 电话:

    $.post("test.php", { "func": "getNameAndTime" },
       function(data){
         alert(data.name); //pretend it's John
         console.log(data.time); //pretend it's 10:05am
       }, "json");
    

    所以在这里,一个ajax请求被发送到test.php,并带有参数 func="getNameAndTime" {"name":"John", "time":"10:05am"} ,然后响应到达指定给first alert()的函数,值为“John”,然后记录为“10:05am”。再说一遍,唯一的原因 data.name data.time 之所以在这个函数中起作用是因为我们在第四个参数中指定了json作为返回类型。

        2
  •  2
  •   Zarel    14 年前

    代码是正确的,除了jQuery中的这一行:

            $.post("php.php", {dir: 'path/to/directory/'},
    

    顺便说一下,看起来您的请求是幂等的,所以请考虑使用 GET POST