public function documentLike(){ if(isset($_POST['document_uid']) && intval($_POST['document_uid'])){ if(!@in_array($_POST['document_uid'], $_SESSION['document_vote'])){ $_SESSION['document_vote'][] = $_POST['document_uid']; $content = new KBContent(); $content->initWithUID($_POST['document_uid']); if($content->uid){ $user_info = get_userdata(get_current_user_id()); $gen = $user_info->gender; $agee = $user_info->age; if($gen=="male"){ $content->option->male+=1; $genText="male"; $genNum=intval($content->option->male); } else{ $content->option->female+=1; $genText="female"; $genNum=intval($content->option->female); } if(10<=$agee && $agee<19){ $content->option->ten+=1; $ageText="ten"; $ageNum=intval($content->option->ten); } if(20<=$agee && $agee<29){ $content->option->twenty+=1; $ageText="twenty"; $ageNum=intval($content->option->twenty); } if(30<=$agee && $agee<39){ $content->option->thirty+=1; $ageText="thirty"; $ageNum=intval($content->option->thirty); } if(40<=$agee && $agee<49){ $content->option->fourty+=1; $ageText="fourty"; $ageNum=intval($content->option->fourty); } $content->like+=1; $content->vote = $content->like - $content->unlike; $content->updateContent(); $arr=[intval($content->like),$genText,$genNum,$ageText,$ageNum]; echo json_encode([intval($content->like),$genText,$genNum,$ageText,$ageNum]); exit; } } } exit; }
위 코드는 기존의 intval($content->like)에 더해서, 유저의 연령, 나이대를 json으로 묶어 script.js로 넘기는 코드입니다.
function kboard_document_like(button){ if(!kboard_ajax_lock){ kboard_ajax_lock = true; jQuery.post( //url kboard_settings.alax_url, //data {'action':'kboard_document_like', 'document_uid':jQuery(button).data('uid')}, // 성공함수 function(res){ kboard_ajax_lock = false; console.log(res); if(res){ jQuery('.kboard-document-like-count', button).text(res); } else{ alert(kboard_localize_strings.you_have_already_voted); } } ,'json' ); } else{ console.log(res); alert(kboard_localize_strings.please_wait); } return false; }
또 위 코드는 json으로 받은 데이터를 가지고 처리하는 클라이언트단입니다..
처리를 하는 코드를 짜야 하는데, res로 받은 json을 배열로 바꾸지를 못하겠습니다...
일단 저 코드를 적용해보면 좋아요버튼 속에 정보가 뜨는걸 보니 전송은 제대로 되는것 같은데,
console.log를 쳐도 출력도 안되고
var parsed = JSON.parse(json);
var arr = [];
for(var x in parsed){
arr.push(parsed[x]);
}
위 코드를 사용해서 json을 배열로 바꿔보려고 해도 syntax error가 발생하네요...
어디를 어떻게 고쳐야 할지 모르겠습니다...
console.log 로 했을때 아무것도 안나온다면 값이 없거나 서버에서 보내는 데이터가 json 형식의 데이터가 아니기 때문입니다.
우선 jQuery.post 에서 json 형식이 아닌 text 형식으로 데이터를 가져와서 console.log 해보세요.
어떤 데이터가 오는지부터 확인을 해보세요.
원하는 데이터가 오는지요.
받아온 json 형식의 text 데이터를 오브젝트(배열)로 변경하시려면 아래처럼 하시면 됩니다.
var obj = jQuery.parseJSON(text);
그리고 KBoard 클래스 파일을 수정하셨기 때문에 업데이트하시려면 고생좀 하실 듯하군요.
추가적으로 프로그램을 손보시려면 꼭 KBoard 클래스 파일외 다른 곳에 프로그램 코드를 작성해주세요.