2017-06-29 77 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]]'標籤 - 這些標籤不在覈心中。 –