将JavaScript变量传递到代码段

时间:2017-06-29 19:13:18

标签: modx modx-revolution

我在我的ModX应用程序的搜索表单上工作,该表单由一个块和一个片段组成。我想要实现的是将输入搜索框的内容传递给javascript变量,然后将其传递给我的代码片段,但是,代码段接收文字文本,而不是我输入参数的值当我打电话给它。

我不知道我在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"
?>

1 个答案:

答案 0 :(得分:1)

我怀疑这段代码是否合理:

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

代码段调用返回代码段执行的结果,其中param q 始终等于字符串&#39; search&#39;在你的情况下,最后在你的页面上你将有这样的东西:

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

为了完成你的任务,你可以使用一个简单的技巧。像这样打电话给你的片段:

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

让我们说这个代码片段位于可通过服务器上的url / test /访问的页面上。所以,现在你只需要使用AJAX将你从搜索表单中收集的参数发送到你的代码片段所在的/ test /页面:

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

希望有所帮助:)

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