2013-09-04 2 views
0

를 호출하고 컨트롤러 메소드 호출 이벤트에 일부 데이터를 전달하고 내 jQuery를 아약스 호출이문제는 내가 YII을 사용하고 좋아

var objectToSend = { "categories" : [selectedOption],"datefrom" : month + "" + year , "dateto" : month + "" + year}; 



       $.ajax({ 
         url: '<?php echo Yii::app()->createUrl('calendar/events'); ?>', 
         type: "POST", 
         data: objectToSend, 

         success: function(data) { 
          console.log(data); 
         }, 
         error: function() { 
          console.log('failed'); 
         } 

        }); 

과 같은 필요가 아약스 그래서 내가 이벤트 메서드에 의해 "캐치"될 일정/이벤트에 데이터를 보내고 일부 DB 가져 오기 작업을 수행하고 데이터를 jQuery uppo 성공으로 가져 오는 것입니다. 문제는 필자가 항상 오류를 기록하고이를 수행 할 때 콘솔에 메시지 (실패)가 표시된다는 것입니다. 나는 컨트롤러 메소드에서 빈 문자열을 얻었는데 이상하게 들린다. 난 그냥, 거기에 간단한 코드와 그것을 밖으로 테스트입니다 것은 내가 문제를 추측하고이

public function actionEvents() 
    { 

     $data = json_decode(Yii::app()->request->getPost('data'),true); // assoc array is returned if second param is true 

     echo json_encode($data); 
      Yii::app()->end(); 
    } 

처럼 보인다는하지만 {JSON 데이터로, 데이터 = {여기에 JSON 데이터}없이 방법으로 전송 데이터 객체에있다 여기}에서 "data ="부분없이. 어떻게 생각해? 내가 "접두사"데이터 개체를 PHP 파일에 보낼 수있는 방법이 있나요 "데이터 ="여하튼? 모든 도움을 주셔서 감사합니다.

+0

을 당신이 JQuery와 가진 형태를 직렬화 할 때 발생하는 것과 유사한 배열을 사용할 수 같아요

내 생각 엔 아마 당신은 당신의 데이터를 json_decode 그냥 직접 POST 변수를 사용하지 않는다는 것입니다 그래서 당신은 보내는 정보에 "데이터"이름을 설정할 수 있습니다. 파이어 버그 (firebug)를 사용하여 정확하게 서버에 무엇을 보내고 있는지 확인하십시오. – Naryl

+0

오류가 발생하면 데이터를 로깅 할 때 "null"이 반환됩니다. – Novica89

+0

POST가 메소드에 전송 된 것은 "categories % 5B % 5D = 이벤트 용 테스트 카테고리 & datefrom = 82013 & dateto = 82013" – Novica89

답변

2

jQuery API docs $ .ajax의 데이터 매개 변수는 "쿼리 문자열로 변환됩니다"라고 말합니다. 결과적으로 json_decode은 유용하지 않습니다. JSON 데이터를 보내려면 objectToSend을 먼저 JSON.stringify해야합니다. 이 작업을 수행하는 경우 적절한 Content-Type 헤더도 설정해야합니다.

은 분명히 YII은 그 자체로 JSON POST 본문을 디코딩하지 않지만 PR 2059에 따라 당신도 PHP의 json_decode 또는 YII의 버전을 사용할 수 있으며 Yii::app()->request->getRawBody()으로 POST 본문을 얻을.

Yii::app()->request->getPost('categories'); 
+0

데이터를 문자열로 변환 한 후 POST가 다음과 같이 나타납니다. "{"categories ":"event-category-for-events "],"datefrom ":"82013 ","dateto ":"82013 "} " – Novica89

관련 문제