我正在尝试在symfony中使用ajax更新表的值,该操作的组成部分是:当我单击update按钮时,它将获取所选行的ID和update属性的新值。
这是我的树枝文件:
<tbody>
{% for post in post %}
<tr>
<td>{{ post.id }}</td>
<td>{{ post.title }}</td>
<td><input type="text" id="description" value="{{ post.description }}"></td>
<td>{{ post.category }}</td>
<td> <input type="submit" name="update" value="update"> </td>
</tr>
{% else %}
<tr>
<td>No Record Found in the database ! </td>
</tr>
{% endfor %}
</tbody>
这是我的jquery和ajax代码在同一树枝文件中:
<script type="text/javascript">
$('.plus').on('click', function (e) {
$this = $(this);
$.ajax({
type: 'POST',
url: '/cart/update',//
async: false,
dataType: 'JSON',
data: {postid: $this.data({{ post.id }}),description: $this.find("#description").val()},
success: function (data) {
if(data.success == false){
alert('error')
}
}
});
});
</script>
这是我的控制器函数,我想在其中获取id的值和更新后的行的新描述:
/**
* @Route("/cart/update", name="cart_update")
*/
public function cartUpdateAction( Request $request ) {
$response = new JsonResponse();
$requestData = $request->request->all();
$postid = $requestData['postid'];
$Description = $requestData['description'];
$em = $this->getDoctrine()->getManager();
$post = $em->getRepository('AppBundle:Post')->find($id);
$post->setTitle($title);
$post->setDescription($description);
$post->setCategory($category);
$em->flush();
}
答案 0 :(得分:1)
您好,我认为这是您获取ID的方式,这是您发布的错误信息
{"productid": "someId", "description": "Some description" }
,并且应该在控制器代码中获取productid
而不是product
。
代替这个$productid = $requestData['product'];
您应该改为$productid = $requestData['productid'];
这里
$post = $em->getRepository('AppBundle:Post')->find($id);
您应该这样做
$post = $em->getRepository('AppBundle:Post')->find($productid);
也许您发布了错误的控制器代码。