我正试图通过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);
路线名称是可以的。也许还有其他想法如何通过点击链接在控制器中获取数据?我不想使用$.ajax
如果您只想让服务器接收请求,则不需要任何AJAX。您可以使用相同参数的链接:
<a href="{{path('current', {'id' : 'a1'})}}" id="get">Some name</a>
此链接将向您的服务器发送GET请求,您将能够访问它。唯一的区别是,您将被重定向到由控制器呈现的新页面。但正如您所说:您不需要AJAX。
此外,您需要了解使用$_GET
检索参数是一种糟糕的做法。如果要使用相同的参数处理GET
和POST
请求,则必须使用$request->get('id')
。和$request->query->get('id')
,如果您只想访问GET请求参数。
但在您的情况下,我认为您的路线定义中有id
参数,然后您可以通过将操作定义为:来访问它
public function currentAction(Request $request, $id) {
// $id - is your parameter
}
保持分支中没有javascript,并使用数据属性检索路径:
<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,那么您应该能够将id作为操作的参数。否则,它将在请求中可用。