2011-03-23 9 views
0

jQuery.ajax를 사용하여 json 문자열을 PHP 배열에 보내고 배열을 가져 와서 변수를 중재하려고합니다. 어떤 이유로 스크립트를 실행할 때 POST가 파이어 버그 (firebug)로 표시 될 수 있지만 매개 변수를 가져 오려고하면 빈 Array()가 표시됩니다. 나는 이것을 몇 시간 동안 알아 내려고 노력해 왔고 나의 지혜 끝에있다. 나는 asp.net에서 .php로 옮겨 가면서 구문이 조금 신선하다. 그러나 이것은 매우 간단해야한다.JQuery AJAX를 사용하여 JSON 객체에 액세스 할 수 없습니다.

다음은 jquery를 보내는 코드입니다.

$('#form_add').submit(function() { 
    var serial_data = $(this).serialize(); 
    $(".page_content").fadeOut("slow", function(){ 
     $.get(uri_base +'/'+uri_cont+'/get_db_name/true/'+Math.random(), function(data) { 
      $.ajax({ 
       type: 'POST', 
       url: uri_base +'/AJAX/add_record/'+data+'/'+Math.random(), 
       data: serial_data, 
       contentType: "application/json", 
       success: function(data){ 
        $.ajax({ 
         type: 'POST', 
         url: uri_base +"/"+ uri_cont +"/"+ uri_func, 
         data: data, 
         success: function(data){ 
          alert(data) 


         }, 
         error: function(xhr, ajaxOptions, thrownError){ 
          alert(xhr.status); 
          alert(thrownError); 
         } 

        }); 

       }, 
       error: function(xhr, ajaxOptions, thrownError){ 
        alert(xhr.status); 
        alert(thrownError); 
       } 

      }); 

     });      
    }); 
    return false; 
}); 

첫 번째 .get()을 무시하고 다음 URL을 완료하기 위해 변수를 다시 가져옵니다. first.ajax() 호출은 직렬화 된 양식 데이터를 내 AJAX 컨트롤러로 보내고 db로 푸시합니다. 컨트롤러에서 돌아와서 json으로 변환 한 객체 배열을 되돌려 보냅니다.

if(isset($key)){  
    $data['add_msg'] = $this->model_ajax->add_record($table,$array); 
    $exploded_data = json_encode($data['add_msg']); 
    print_r($exploded_data); 
    exit; 
} 

은 거기에서 다음 아약스()는 .pag_content의 사업부에 표시 할 뷰를 다시 끌어 내 컨트롤러에 데이터를 보낼 예정이다. 나는 json 객체를 반향시키고, 각 루프가 키를 꺼내고, 다른 것들을 무수히 시도했다. 아무것도 ... 나는 그것을 통해 반복 할 때 JSON 잘못된 오류 (디코딩하려고 할 때), 그냥 "배열()"출력 또는 아무것도 표시하지 않습니다.

이 컨트롤러 코드와 내가 불을 지르고에서보고하고있는 POST 출력은 ...

echo $_POST; 

$array = $_POST; 
echo $array; 

foreach($_POST as $key){ 
    echo $key; 
} 
exit; 

[{"id":"29","datetime":"2011-03-23 12:10:25","full_name":"Leroy Brown","email_address":"[email protected]","password":"asdf","id_group":"0","id_sites":"0","active":"0"}] 

답변

0

PHP에서 출력 할 아무것도하기 전에 올바른 콘텐츠 유형을 보낼 수 있는지 확인하십시오. JQuery 및 mootools와 같은 프레임 워크는 수락 문자 집합 (accepts charset)을 사용하여 필터링해야하는 경향이 있습니다 (방화 녀석에서 볼 수 있음)

헤더 ("Content-Type : application/json"); // 또한 프레임 워크

:)에 따라 방화범에 동의 헤더를 확인, 텍스트/JSON 될 수

+0

내 요청 헤더가 현재 응용 프로그램/JSON으로 설정되어 있지만, 나뿐만 아니라 다른 유형을 시도했습니다. 어떻게 든 불을 붙이려는 것뿐입니다. :) 내 응답 헤더는 text/html로 설정됩니다. ajax() 함수의 Content/Type 매개 변수가 데이터를 반환하기위한 것이지 전송을위한 것이 아니라고 가정합니다. – leviathenator

+0

음, 예, 그게 전부입니다. 응답 자체는 요청 자체에 대한 내용 유형이 없습니다. 콘텐츠 유형을 위의 인용 된대로 설정하십시오 (PHP는 !!!입니다). 시도해보십시오. – SchizoDuckie

+0

내 문제가 발생한 것은 코드 위 어딘가에 "return true"가 있기 때문입니다. 왜 내가 거기에 그것을 가지고 있었는지 확실하지 않지만 내가 그것을 꺼내 었더라면 그것은 완전하게 일했다. 도와 주셔서 감사합니다!!! – leviathenator

관련 문제