2017-01-25 9 views
1

Я пытаюсь использовать строку JSON, построенную с помощью функции JS JSON.stringify(objects). На моем рабочем локальной версии, он работает, но на сервере она возникает следующее сообщение об ошибке:PHP Symfony 3 - переменные POST недоступны в контроллере

invalid argument supplied for foreach

После некоторых исследований, таблица $ POST пуста. Но в консоли браузера данные отправляются с запросом.

Вот содержание запроса:

rencontres:[{"id":"1","m":"","f":"0-2","e":"","p":"","status":"3","st":false,"si":false,"se":false,"sp":false,"ss":false}] 

Здесь строку JSON, содержащуюся в $GET['rencontres'] (доступ по $request->get("rencontres")):

[{"id":"1","m":"","f":"0-2","e":"","p":"","status":"3","st":false,"si":false,"se":false,"sp":false,"ss":false}] 

, который кажется правильным.

Вот некоторые результаты var_dump: var_dump ($ renontres) дает [] []

var_dump($request->get("rencontres") gives also [][] 

вот сам метод:

public function postSaveRencontre(Request $request){ 
    $em = $this->getDoctrine()->getManager(); 
    $rencontres = json_decode($request->get("rencontres"), true); 
    //log struff 
    foreach ($rencontres as $key => $r) { 
     //blablabla 
    } 
    //return statement 
} 

и здесь заявление AJAX (URL правильно) :

$.ajax({ 
    type: "POST", 
    url:"url", 
    data: {rencontres:JSON.stringify(rencontres)}, 
    success:function(data){ 
     console.log("save performed"); 
    } 
}); 
+0

Предоставляет ли 'var_dump ($ rencontres)' какие-либо подсказки? – Phylogenesis

+0

дает «[] []« – user2316991

+1

Дамп переменной '$ rencontres' перед вашим' foreach() '-statement. Также попробуйте удалить 'stripcslashes()'. –

ответ

0

Привет Я думаю, что у меня такая же проблема в моем приложении
причина этой проблемы заключается в том, что Ajax передавать данные как тип содержимого приложения/JSON на пост
исправить эту poblem нужно добавить этот код в ваш Action

$data = json_decode($request->getContent(), true); 
$request->request->replace($data); 
dump($request->request->get("rencontres")) 

вы должны добавить Ligne к все ваши действия, у которых есть POST
или Подумайте, создать сервис для преобразования вашего запроса Json

+0

В нем говорится, что аргумент 1 передан Symfony \ Component \ HttpFoundation \ ParameterBag :: replace() должен быть из массива типов, null g IVEN. $ request-> getContent() кажется нулевым ... который подключен – user2316991

+0

, если вы просматриваете сеть, вы видите данные в поле «Запрос полезной нагрузки» –

+0

Да. И это правильно. – user2316991