Macros Nette-{link!}宏可以';t处理URL中已存在的GET参数

Macros Nette-{link!}宏可以';t处理URL中已存在的GET参数,macros,get,nette,Macros,Get,Nette,我在我的项目中使用Nette2,我还使用带有AJAX的.latte模板系统 现在我有了jquery函数(在模板中),它应该在同一个目标上生成GET请求,但它应该在它之后添加一些GET参数 该目标最初使用一个GET参数呈现,然后执行一些操作,在其中一些操作期间,AJAX从同一目标加载一些信息(只添加两个GET参数) 现在,我使用.latte{link!}宏(感叹号表示信号)生成AJAX URL。现在可以生成新的URL,并将GET参数附加到原始URL但是append解析得不好,因为URL中有&

我在我的项目中使用Nette2,我还使用带有AJAX的.latte模板系统

现在我有了jquery函数(在模板中),它应该在同一个目标上生成GET请求,但它应该在它之后添加一些GET参数

该目标最初使用一个GET参数呈现,然后执行一些操作,在其中一些操作期间,AJAX从同一目标加载一些信息(只添加两个GET参数)

现在,我使用.latte{link!}宏(感叹号表示信号)生成AJAX URL。现在可以生成新的URL,并将GET参数附加到原始URL但是append解析得不好,因为URL中有
&%3B
,而不仅仅是
&

我的模板中有以下代码:

{block content}
<h1 n:block=title>New Rule</h1>

{snippet rulesForm}
    {form newRuleForm}
        {$form}
        <script type="text/javascript">
            {foreach $form['rule']->containers as $i => $rule}
                {include #jsCallback, id => $i, input => $rule['table']->name, link => tableChange}
                {include #jsCallback, id => $i, input => $rule['column']->name, link => tableChange}
            {/foreach}
        </script>
    {/form}
{/snippet}
{/block}

{define #jsCallback}
$('#{$control["newRuleForm"]['rule'][$id][$input]->htmlId}').on('change', function(){
    alert('{$link}');
    $.nette.ajax({
        type: 'GET',
        url: '{link {$link}!}',
        data: {
            'value': $(this).val(),
        }
    });
});
{/define}
{块内容}
新规则
{代码段规则表单}
{form newRuleForm}
{$form}
{foreach$form['rule']->containers as$i=>$rule}
{include#jsCallback,id=>$i,input=>$rule['table']->name,link=>tableChange}
{include#jsCallback,id=>$i,input=>$rule['column']->name,link=>tableChange}
{/foreach}
{/form}
{/snippet}
{/block}
{定义#jsCallback}
$('#{$control[“newRuleForm”]['rule'][$id][$input]->htmlId}')。在('change',function()上{
警报(“{$link}”);
$.nette.ajax({
键入:“GET”,
url:“{link{$link}!}”,
数据:{
'value':$(this.val(),
}
});
});
{/define}
如何解决此问题,以便生成正确获取参数的附加链接


谢谢。

也许没有景观修改器

$.nette.ajax({
    type: 'GET',
    url: '{link {$link|noescape}!}',
    data: {
        'value': $(this).val(),
    }
});

最好的方法是避免生成内联Javascript。您可以按CSS类标记所有这些表单控件(例如,
特殊输入
),这样就不必在Latte迭代中生成Javascript代码

{snippet rulesForm}
...
{/snippet}
$('.special input')。关于('change',函数(){
$.nette.ajax({
键入:“GET”,
url:$(“[数据链接表]”)。数据(“链接表”),
数据:{
值:$(this.val()
}
});
});