Symfony:使用ajax

时间:2019-03-25 15:45:27

标签: jquery json ajax symfony

我正在尝试在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();
}

1 个答案:

答案 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); 也许您发布了错误的控制器代码。