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"}]
내 요청 헤더가 현재 응용 프로그램/JSON으로 설정되어 있지만, 나뿐만 아니라 다른 유형을 시도했습니다. 어떻게 든 불을 붙이려는 것뿐입니다. :) 내 응답 헤더는 text/html로 설정됩니다. ajax() 함수의 Content/Type 매개 변수가 데이터를 반환하기위한 것이지 전송을위한 것이 아니라고 가정합니다. – leviathenator
음, 예, 그게 전부입니다. 응답 자체는 요청 자체에 대한 내용 유형이 없습니다. 콘텐츠 유형을 위의 인용 된대로 설정하십시오 (PHP는 !!!입니다). 시도해보십시오. – SchizoDuckie
내 문제가 발생한 것은 코드 위 어딘가에 "return true"가 있기 때문입니다. 왜 내가 거기에 그것을 가지고 있었는지 확실하지 않지만 내가 그것을 꺼내 었더라면 그것은 완전하게 일했다. 도와 주셔서 감사합니다!!! – leviathenator