【问题标题】:Passing JavaScript variable into snippet将 JavaScript 变量传递到代码段
【发布时间】:2017-06-29 19:13:18
【问题描述】:

我正在为我的 ModX 应用程序创建一个搜索表单,该表单由一个块和一个 sn-p 组成。我想要实现的是将输入到搜索框中的内容传递给 javascript 变量,然后将其传递给我的 sn-p,但是,sn-p 接收文字文本,而不是我输入的值我调用它时的参数。

我不知道我在 ModX 中是否可以尝试我的尝试,或者我是否需要采取不同的方法,但我非常感谢任何能提供任何见解的人。

块:

<script>
$('.search-btn').click(function() {
    var search = $('.search-entry').val();
    [[showSearchResults? &q=`search`]]
});
</script>

片段:

<?php
$search = $modx->getOption('q', $scriptProperties);
echo $search; // this always prints "search"
?>

【问题讨论】:

    标签: modx modx-revolution


    【解决方案1】:

    我怀疑这段代码是否有意义:

    <script>
        $('.search-btn').click(function() {
        var search = $('.search-entry').val();
        [[showSearchResults? &q=`search`]]
        });
    </script>
    

    sn-p 调用返回 sn-p 的执行结果,参数 q 在您的情况下始终等于字符串“搜索”,最后在您的页面上,您将看到如下内容:

    <script>
        $('.search-btn').click(function() {
        var search = $('.search-entry').val();
        'search' // assuming your snippet just returns what has been passed to it.
        });
    </script>
    

    为了完成您的任务,您可以使用一个简单的技巧。像这样调用你的 sn-p:

    [[!yourSnippet? &yourVar=`[[!#POST.yourVar]]` ]] // or GET
    

    假设这个 sn-p 调用位于您服务器上可通过 url /test/ 访问的页面上。因此,现在您只需将使用 AJAX 从搜索表单中收集的参数发送到您的 sn-p 所在的 /test/ 页面:

    var yourVar = $('.search-entry').val();
    $.ajax({
       type: "POST",
       url: "/test/",
       data: {yourVar: yourVar},
       success: success,
       dataType: "html"
    });
    

    希望对你有帮助:)

    PS如果你想搜索资源内容和电视内容,我强烈推荐一个额外的叫做SimpleSearch

    【讨论】:

    • 感谢@curveball 的建议。我很好奇, [[!#POST]] 是用来获取 POST 变量的吗?如果我愿意,我可以对 [[!#GET]] 做同样的事情吗?
    • 是的,它用于获取 post/get 变量并将它们传输到您的实际脚本/sn-p。当然,它也应该与 GET 一起使用。您可以检查它,就像将 url-parameter 添加到带有 [[!#GET.yourVar]] 的 sn-p 所在的 url。
    • 请注意,您需要安装 FastField 或 pdoTools 才能使用 [[!#POST]][[!#GET]] 标签 - 这些标签未包含在核心中。
    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2015-05-08
    相关资源
    最近更新 更多