2

我在我的项目中使用 Nette 2,并且还使用带有 AJAX 的 .latte 模板系统。

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

该目的地最初是使用一个 GET 参数呈现的,然后进行一些操作,并且在其中一些操作期间 AJAX 从同一目的地加载一些信息(只需添加几个 GET 参数)。

现在我使用 .latte {link!} 宏(感叹号代表信号)生成 AJAX URL。这现在能够生成新的 URL,并将 GET 参数附加到原始 URL。但是 append 解析很糟糕,因为&amp%3BURL 中有而不是 just &

我的模板中有这段代码:

{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}

如何解决此问题,以便生成正确附加 GET 参数的链接?

谢谢。

4

2 回答 2

1

最好的方法是避免生成内联 Javascript。您可以通过 CSS 类(例如。)标记所有这些表单控件special-input,然后您不必在 Latte 迭代中生成 Javascript 代码。

{snippet rulesForm}
    <div data-link-table="{link tableChange!}"></div>
    ...
{/snippet}
$('.special-input').on('change', function () {
    $.nette.ajax({
        type: 'GET',
        url: $('[data-link-table]').data('linkTable'),
        data: {
            value: $(this).val()
        }
    });
});
于 2014-10-08T12:46:28.403 回答
0

也许 noescape 修饰符?

$.nette.ajax({
    type: 'GET',
    url: '{link {$link|noescape}!}',
    data: {
        'value': $(this).val(),
    }
});
于 2014-03-06T10:15:57.960 回答