본문 바로가기

   
Programming/Ajax

Ajax textStatusparsereoor Unexpected token A in JSON at position 0 에러 해결 방법

반응형

Ajax textStatusparsereoor Unexpected token A in JSON at position 0 에러 해결 방법

최근에 사이트를 만들던 파악하기 힘들었던 에러를 경험했습니다. Ajax를 이용해 정상적으로 데이터를 가져오지 못하는 경우 Ajax에서 에러가 출력 되도록 코드를 작성하지 않았다면 오류에 대한 내용이나 반응이 전혀 나오지 않습니다.

그래서 Ajax를 사용하면서 아래 오류에 대한 내용을 경험하신다면 제가 작성한 글을 참고하시면 도움이 되실 겁니다.
- Ajax textStatusparsereoor 오류
- errorThrownSyntaxError: Unexpected token A in JSON at position 0 오류

해당 오류를 테스트하기 위해 직접 테스트 페이지 소스 코드를 간단히 작성하였습니다.

 

소스코드

<html>
<head>
<script src="../js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	
    $("#ajax_btn").click(function(){

		$.ajax({
    		url: "ajax_data.php",
    		type: "post",
    		dataType:"json",
    		data: $("form").serialize(),    		
    	    }).done(function(data){
        	    var ajax_server_data = data.result;
				alert(ajax_server_data);	    	
            }).fail(function (jqXHR, textStatus, errorThrown) {
				alert("jqXHR"+jqXHR +"\ntextStatus" + textStatus+"\nerrorThrown" + errorThrown);
	   		   });

	});
	
});
</script>
</head>
<title>test</title>
<body>

<div>
	<button id="ajax_btn">Ajax Test Btn</button>
</div>

</body>
</html>

 

소스 코드는 http://enjoyrank.com/blog_test_source/ajax_error.php URL에서 확인 가능하며 실제 제가 경험한 오류 화면은 아래 이미지와 같습니다.


 

제가 경험한 오류의 문제는 Ajax를 이용해 서버와 통신을 하는 과정에서 datatype을 JSON으로 지정하였는데 데이터를 보내주는 곳에서 JSON 형태로 데이터를 전달해 주지 않았기 때문에 생긴 오류였습니다.

소스 코드를 라인 단위로 확인하며 작업을 진행했다면 생기지 않았을 오류였는데 코드를 복사하고 붙여 사용하다 보니 해당 오류에 문제가 있을 거라는 생각을 하지 못하다 보니 조금 헤맸었던 기억이 납니다.

Ajax를 통해 실제 데이터를 전달해 주는 PHP 소스 파일도 간단히 작성하였습니다.

<?php
    header("Content-Type: application/json");
    $result = "json 형태로 지정했다면 보내주는 데이타를 json 형태로 보내주어야 함. ";
    echo(json_encode(array("mode" => $_REQUEST['mode'], "result" => $result)));
?>

 

그럼 아래 이미지와 같이 정상적으로 Ajax를 이용해 전달 받은 데이타를 확인하실 수 있습니다.


 

간단한 데이터를 주고받으시려면 JSON 방식을 이용하지 않고 Datatype JSON을 주석 처리하시고 실제 데이터를 전달해 주는 페이지에서도 JSON 방식을 사용하지 않고 echo 문만 작성해 주시면 간단히 데이터 전달이 가능합니다.


하지만 여러 데이터를 주고받고 확장할 가능성이 있다면 JSON 방식을 이용해서 코드를 작성하시면 좋을 것 같습니다.

저와 동일한 문제로 고민하고 있으실 분들에게 쉽게 해결되기를 바라는 마음으로 작성해 보았습니다. 필요하신 분들은 참고 하시기 바랍니다.

반응형