我试图通过jQuery中的$ .GET获取一些数据。我有一个链接,点击后我想在控制器中接收数据。我做了这个,但它不起作用,$ _GET数组是空的:
html.twig:
<a href="{{path('current')}}" id="get">Some name</a>
<script>
$(document).ready(function() {
$(document).on('click','#get', function(){
$.get({{path('current', {'id' : 'a1'})}}, function( data ) {
console.log(data);
});
});
});
</script>
控制器:
var_dump($_GET);
路线名称为O.K.也许其他一些想法如何通过点击链接获取控制器中的数据?我不想使用$ .ajax
答案 0 :(得分:0)
如果您只是希望服务器接收请求,则不需要任何AJAX。您可以使用相同参数的链接:
<a href="{{path('current', {'id' : 'a1'})}}" id="get">Some name</a>
此链接会向您的服务器发送GET请求,您将能够访问它。唯一的区别是您将被重定向到控制器呈现的新页面。但正如你所说:你不需要AJAX。
此外,您需要了解使用$_GET
检索参数是一种不好的做法。如果要使用相同参数处理$request->get('id')
和GET
请求,则必须使用POST
。如果您只想访问GET请求参数,请$request->query->get('id')
。
但在您的情况下,我认为您的路由定义中包含id
参数,然后您可以通过将操作定义为:
public function currentAction(Request $request, $id) {
// $id - is your parameter
}
答案 1 :(得分:0)
保持你的twig清理javascript并使用data属性来检索路径:
<a href="#_" data-posturl="{{path('current', {'id' : 'a1'})}}" id="get">Some name</a>
在你的js文件中:
$(document).on('click','#get', function(){
$.post($(this).data('posturl')).done(function (data) {
}).error(function (data) {
$('body').prepend(data.responseText);
});});
并且在您的操作中,如果在路线中定义了您的操作,您应该能够将您的ID作为参数。否则它将在请求中提供。