嗨,谢谢你的帮助,我有一个ajax调用我希望发送给Controller的数据,所以我可以在以后删除指定的数据。目前我想从控制器显示给定的javascript。提前抱歉我的英语,这不是我的第一语言。
它当前正在返回一个JsonResponse来测试该方法是否被调用但是我想返回给定的javascript数组(playlogs),我该怎么做呢?
使用Javascript:
<script type="text/javascript">
$(document).ready(function () {
$('#deleteBtn').click(function () {
var playlogs = [];
$.each($("input[name='playlog']:checked"), function () {
playlogs.push($(this).val());
});
var confirmText = "Are you sure you want to delete this?";
if (confirm(confirmText)) {
$.ajax({
type: "delete",
url: '{{ path('playlog_delete_bulk') }}',
data: playlogs,
success: function () {
alert("selected playlogs: " + playlogs.join(", "));
},
});
}
return false;
});
});
</script>
PlayLogController中的deleteBulkAction:
/**
* @Route("/delete/bulk", name="playlog_delete_bulk")
*/
public function deleteBulkAction(Request $request)
{
if ($request->isXMLHttpRequest()) {
return new JsonResponse(array('data' => 'Successfully called the named route playlog_delete_bulk '));
}
return new Response('This is not ajax!', 400);
}
答案 0 :(得分:0)
使用&#39;请求&#39; ParameterBag用于访问POST,PUT,PATCH和DELETE数据
$password = $request->request->get('password');
和&#39;查询&#39; - 获取GET数据
$pageNumber = $request->query->get('page');
答案 1 :(得分:0)
您可以将播放列表作为json(或任何其他格式,取决于数据)发送。通过$request->getContent()
读取请求体并在php数组中解码。
例:
<script type="text/javascript">
$(document).ready(function () {
$('#deleteBtn').click(function () {
var playlogs = [];
$.each($("input[name='playlog']:checked"), function () {
playlogs.push($(this).val());
});
var confirmText = "Are you sure you want to delete this?";
if (confirm(confirmText)) {
$.ajax({
type: "delete",
url: '{{ path('playlog_delete_bulk') }}',
data: JSON.stringify(playlogs),
success: function (data) {
alert("selected playlogs: " + data.join(", "));
}
});
}
return false;
});
});
/**
* @Route("/delete/bulk", name="playlog_delete_bulk")
*/
public function deleteBulkAction(Request $request)
{
if ($request->isXMLHttpRequest()) {
return new JsonResponse(json_decode($request->getContent()));
}
return new Response('This is not ajax!', 400);
}