Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony中使用Ajax访问控制器方法_Php_Jquery_Ajax_Symfony - Fatal编程技术网

Php 在Symfony中使用Ajax访问控制器方法

Php 在Symfony中使用Ajax访问控制器方法,php,jquery,ajax,symfony,Php,Jquery,Ajax,Symfony,我有一个使用细枝模板的表单类型,在该细枝中,我获取附加到当前列表对象的图像,并显示它们以及一个为用户删除它们的选项。我希望能够让用户在不刷新页面的情况下单独删除图像,因此我尝试使用Ajax触发控制器方法 scripts.js $('.delete_image').on('click', function(e) { $.ajax({ type: 'POST', url: '/delete_image', data: ({ listing_id: $('#li

我有一个使用细枝模板的表单类型,在该细枝中,我获取附加到当前<代码>列表对象的图像,并显示它们以及一个为用户删除它们的选项。我希望能够让用户在不刷新页面的情况下单独删除图像,因此我尝试使用Ajax触发控制器方法

scripts.js

$('.delete_image').on('click', function(e) {
  $.ajax({
    type: 'POST',
    url: '/delete_image',
    data: ({
      listing_id: $('#listing_id').val(),
      imageName: 'nature-forest-trees-158251.jpg'
    }),
    success: function(response) {},

    error: function(jqXHR, textStatus, errorThrown) {
      alert('status code: ' + jqXHR.status + 'errorThrown: ' + errorThrown + 'jqXHR.responseText:' + jqXHR.responseText);
    }
  })
})
imageName
只是一个占位符值(我正在调试的图像),在我的控制器中

ListingController.php

/**
 * @Route("/delete_image", name="delete_image")
 * @Method({"GET", "POST"})
 * @ParamConverter("listing", class="DirectoryPlatform\AppBundle\Entity\Listing")
 */
public function deleteImage(Request $request, Listing $listing) {
  // $listing_id = (isset($_POST['listing'])) ? $_POST['listing'] : -1;
  // $imageName = (isset($_POST['imageName'])) ? $_POST['imagename'] : -1;
  $listing_id = $request->get('listing');
  $imageName = $request->get('imageName');
  $this->get('punk_ave.file_uploader')->removeFiles(array('folder' => 'tmp/attachments/' . $listing->getId() . '/'. $imageName));

  exit(0);
}

我尝试过使用
$\u POST[]
以及
$request->get()
,但都没有用。我可能会使用内联脚本,但出于最佳编码实践的考虑,我希望避免使用内联脚本

在控制器内获取POST变量的方法是:

$listing_id = $request->request->get('listing');
但是,在您的情况下,我怀疑是否应该使用AJAX请求,因为您可以通过正确操作DOM来避免AJAX调用的开销(例如,在单击delete按钮时从DOM中删除图像,而不在服务器上执行任何操作)最后,通过提交表单将所有更改一起提交,然后从实体中删除删除的图像

最后一个调用也可以是AJAX调用