Jquery 将参数从ajax发送到控制器

Jquery 将参数从ajax发送到控制器,jquery,ajax,symfony,controller,Jquery,Ajax,Symfony,Controller,错误是:鸡尾酒\RecipesBundle\Entity\Component查询缺少标识符id 所以,问题是控制器没有得到参数ingredientId,我已经尝试了很多例子和教程,但没有任何帮助。也许我错过了一些显而易见的错误?如何将参数从ajax函数传递到控制器?您正在创建一个新的空请求对象,该对象显然没有当前请求的请求信息。。。它将是空的 您可以将名为$request的参数添加到addingredienttoser,并使用类型提示作为request$request。这样,Symfony2将为

错误是:鸡尾酒\RecipesBundle\Entity\Component查询缺少标识符id


所以,问题是控制器没有得到参数ingredientId,我已经尝试了很多例子和教程,但没有任何帮助。也许我错过了一些显而易见的错误?如何将参数从ajax函数传递到控制器?

您正在创建一个新的空请求对象,该对象显然没有当前请求的请求信息。。。它将是空的

您可以将名为
$request
的参数添加到
addingredienttoser
,并使用类型提示作为
request$request
。这样,Symfony2将为您提供当前请求的实际请求对象,并填充正确的请求信息。

工作代码为

public function addIngredientToUserAction(Request $request) {
    $usr = $this->getUser();
    $id = $request->get('ingredient');
    $ingredientEntity = $this->getDoctrine()->getRepository('CocktailsRecipesBundle:Ingredient')->find($id);
    $usr->addIngredient($ingredientEntity);

    return $this->render('CocktailsRecipesBundle:Default:menu.html.twig');
}
在你对上一个答案的评论中,你犯了一个错误

$id = $request->get('id');
                     ^^ - should be 'ingredient'

在ajax中,我应该将什么作为参数发送给控制器参数$request?您不需要发送任何东西,
request$request
Post$Post
,操作函数的一些其他参数也不需要显式传递,它们由Symfony2自动填写。尝试调试--使用
var\u dump($\u GET,$\u post,$\u REQUEST)检查post数据是否到达控制器所有三个数组都为空。为什么它没有到达控制器?可能是因为它正在通过路由,而参数没有被传递?当更改POST以获取它时,会显示参数被传递(var dump
array(1){[“{”component:“2”}]=>string(0)”}
但我仍然无法找到它的担忧,一条评论(现已删除)建议更改变量名,我就这么做了。事实并非如此,即使使用ingredient,它仍然无法工作。请在调用ajax()之前在JS中执行alert(Component)命令好吗?