Uncaught TypeError 가 발생하는데 원인이 뭘까요?
본문
해당 버튼클릭시 크롬개발자콘솔에 나타는 에러 입니다
회원정보에 포인트를 가져오는 부분입니다
Uncaught TypeError: Cannot read properties of null (reading 'point')
at Object.success (36393?page=10:2629:24)
at i (jquery-1.12.4.min.js?ver=20200819:2:27449)
at Object.fireWith [as resolveWith] (jquery-1.12.4.min.js?ver=20200819:2:28213)
at y (jquery-1.12.4.min.js?ver=20200819:4:22721)
at XMLHttpRequest.c (jquery-1.12.4.min.js?ver=20200819:4:26925)
에러가 발생하는 코드
if($is_memeber) {
echo json_encode(array('point' => intval($member['mb_point'])), JSON_UNESCAPED_UNICODE);
}
?>
<?php if(count($premium) > 0) { ?>
var reqPointMap = <?php echo json_encode($PREMIUM_POINT); ?>;
$(".register-premium").click(function() {
$.ajax("/api/get_point.php", {
dataType: 'json',
success: function(res) {
const checkVal = $("input[name=wr_4]:checked").val();
const reqPoint = reqPointMap[checkVal];
if(res.point < reqPoint) {
const r = confirm("현재 포인트가 부족합니다.");
if(r) {
window.open('point_page');
}
} else {
var r = confirm(reqPoint+"포인트를 사용하여 <?php echo $premium['isAvailable'] ? '연장':'신청';?>하시겠습니까?");
if(r) {
$.post("/api/register_premium.php", {wr_4: checkVal, wr_id: <?php echo $wr_id; ?>}, function(res) {
if(res.success) window.location.reload();
else {
alert(res.errMsg);
}
}, 'json');
}
}
}
});
return false;
});
<?php } ?>
답변 3
다음처럼 실행해보는 방법도 있을것 같습니다.
<?php
$out = ['point' => 0];
if($is_memeber) {
//echo json_encode(array('point' => intval($member['mb_point'])), JSON_UNESCAPED_UNICODE);
$out['point'] = intval($member['mb_point']);
}
echo json_encode($out, JSON_UNESCAPED_UNICODE);
?>
또는 오타는 없는지 확인 해보는것도 좋을것 같습니다.
// if($is_memeber) {
if($is_member) {
!-->!-->
var reqPointMap = <?php echo json_encode($PREMIUM_POINT); ?>;
이 변수를
var reqPointMap = "<?php echo json_encode($PREMIUM_POINT); ?>";
로 수정해보시겠어요?
!-->!-->
success: function(res) {
// 이 사이에 console.log( res) 해서 무엇이 나오는지 확인해 보세요.
const checkVal = $("input[name=wr_4]:checked").val();
답변을 작성하시기 전에 로그인 해주세요.