2017-06-29 71 views
0

我正在为由我的ModX应用程序组成的搜索表单工作,该应用程序由一个块和一个片段组成。我想要实现的是将搜索框中输入的内容传递给一个javascript变量,然后将其传递给我的代码片段,然而,代码片段接收到文本文本,而不是我在输入参数时输入的值叫它。将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

我怀疑,这个代码是有道理的:

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

的片段调用返回段的执行结果w ^第i个PARAM q总是等于在你的情况下,字符串“搜索”,最后你的页面上,你就会有这样的事情:

<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到/测试/页搜索表单收集到的参数,其中,您的片段是:

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

希望它能帮助:)

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

+0

感谢您的建议@curveball。我很好奇,是[[!#POST]]是为了获取POST变量吗?如果我想,我可以用[[!#GET]]做同样的事情吗? – hRdCoder

+0

是的,它是为了获得post/get变量并将它们转移到您的实际脚本/代码片段中。当然,它也应该和GET一起工作。您可以检查它,如将URL参数添加到您的代码段[[!#GET.yourVar]]所在的网址。 – curveball

+0

请注意,您需要安装FastField或pdoTools才能使用'[[!#POST]]'或[[!#GET]]'标签 - 这些标签不在核心中。 –