Сегодня было грубое ночное и утро хахаха. Я пытаюсь получить data
с symfony2
от петиции AJAX
'POST'
.[OLVED. Ошибка при получении данных от POST ajax петиции Symfony2
На самом деле я хочу отправить массив и получить его в контроллере, но я получаю ошибку, подобную этой переменной: null
. Я думаю, что я пытаюсь это сделать правильно, но ... Давайте посмотрим!
Это JS AJAX заявление, я получаю ЛУ # sortable.children заказ(), чтобы обновить его на базу данных, поэтому я послал массив с положением и ид.
пример: ["1", "3", "2"]. Таким образом, объект с id = 1 в db будет находиться в позиции 1. Элемент с id = 3 будет находиться в позиции 2, а элемент с id = 2 будет находиться в позиции 3.
$('#ordenar').click(function(){
var $children = $('#sortable').children();
var numElementos = $children.length;
var socialSorted = [];
for(var i=0; i<numElementos; i++){
socialSorted.push($children[i].id);
}
$.ajax({
url: ' {{ path('admin_update_social_position') }} ',
datos: socialSorted,
method: 'POST'
}).done(function (data) {
if(data.type == 'OK'){
window.location.reload();
}
if(data.type == 'ERROR'){
$('#error-message').slideDown();
}
});
});
а вот контроллер
/**
* @Route("/admin/update/order/social", name="admin_update_social_position")
*/
public function orderSocial(Request $request)
{
$em = $this->getDoctrine()->getManager();
$socialSorted = $request->request->get('socialSorted');
$numElementos = count($socialSorted);
for($i=0; $i<$numElementos; $i++)
{
$social = $em->getRepository('AppBundle:Social')->findById($socialSorted[$i]);
$social->setPosition($i+1);
$em->persist($social);
}
if (empty($socialSorted)) {
$this->sendResponseStatus('ERROR');
return new JSONResponse($this->getData());
}
$em->flush();
$this->sendResponseStatus('OK');
// Generamos los datos para la respuesta ajax
return new JSONResponse($this->getData());
}
Я перепробовал много способов ... Отсылаю массив, отправляя JSON
с массивом в, а также различные способы, чтобы получить данные из controller
... любые советы/решения?
Спасибо вам всем вам
EDIT: ошибка в строках
$social = $em->getRepository('AppBundle:Social')->findById($socialSorted[$i]);
$social->setPosition($i+1);
$em->persist($social);
Becausee после findBy возвращает вас и ArrayCollection, а затем я должен делать:
$social = $em->getRepository('AppBundle:Social')->findById($socialSorted[$i]);
$social[0]->setPosition($i+1);
$em->persist($social[0]);
'datos: socialSorted,' ... datos? ... Не должно быть «data: socialSorted»,? Тот факт, что вы получаете «null», указывает, что параметр НЕ отправляется правильно. Symfonys 'request-> get()' возвращает 'null', если параметр не существует. –
Извините, исправьте меня, если я ошибаюсь. В ajax вы написали 'datos' вместо' data', а также отправили данные с помощью имени ключа.Нравится 'данные: {'socialSorted': socialSorted},' –
Согласен! Да! Какая огромная ошибка .. ха-ха, спасибо всем! Теперь я получаю внутреннюю ошибку, но я посмотрю на контроллер! @KinshukLahiri –