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