我在项目中使用Nette 2,并且还使用带有AJAX的.latte模板系统。
现在我有jquery函数(在模板中)应该在同一目标上生成GET请求,但它应该在它之后添加一些GET参数。
此目标最初使用一个GET参数呈现,然后执行一些操作,在其中一些操作中,AJAX从同一目标加载一些信息(只添加几个GET参数)。
现在我使用.latte {link!}宏生成AJAX URL(感叹号代表信号)。现在,这可以生成新的URL,并将GET参数附加到原始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}
如何解决此问题,以便生成正确附加GET参数的链接?
感谢。
答案 0 :(得分: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()
}
});
});
答案 1 :(得分:0)
也许是noescape修饰符?
$.nette.ajax({
type: 'GET',
url: '{link {$link|noescape}!}',
data: {
'value': $(this).val(),
}
});