2017-01-25 5 views
1

JS 함수 JSON.stringify(objects)으로 작성된 JSON 문자열을 사용하려고합니다. 내 작업 로컬 버전에서이 노력하고 있지만 서버에 다음과 같은 오류가 발생합니다 : 몇 가지 조사 후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}] 

는 ($request->get("rencontres") 액세스) $GET['rencontres']에 포함 JSON 문자열이다 : 올바른 것

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

여기

요청의 내용이다. 여기

일부 위해서 var_dump 결과 : 여기

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이 올바른지) 위해서 var_dump ($ renontres)가 제공 [] [] 여기

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

은 방법 자체 :

$.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

foreach() 구문 앞에 변수'$ rencontres'를 덤프하십시오. 또한'stripcslashes()'를 제거해보십시오. –

답변

0

안녕하세요. 내 응용 프로그램에서 동일한 문제가 발생할 것이라고 생각합니다.이 문제의 원인은 아약스는 당신이 당신이이 맞추을 추가 할 필요가 액션

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

에이 코드를 추가해야이 poblem 고쳐 포스트
에 콘텐츠 형식 응용 프로그램/JSON으로 데이터를 전송한다는 것입니다 POST가있는 모든 작업
또는 Json 요청을 변형하기위한 서비스를 만드는 것을 생각하십시오.

+0

이것은 인수 1이 Symfony \ Component로 전달되었습니다 \ HttpFoundation \ ParameterBag :: replace() 배열 형식이어야합니다, null g iven. $ request-> getContent()가 null 인 것 같습니다 ... 네트워크를 검사하면 – user2316991

+0

이 유료입니다. 요청 페이로드에 데이터가 표시됩니까 –

+0

예. 그리고 그것은 정확합니다. – user2316991