본문 바로가기
PHP 박살내기/php ajax json

ajax 와 json 을 통해 동적으로 url을 제어하고 데이터를 받아오기 간단예제

by 인생여희 2017. 9. 11.
반응형

ajax 와 json 을 통해 동적으로 url을 제어하고 데이터를 받아오기 간단예제


#동작화면




#파일 경로



#index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>json and ajax</title>

</head>
<body>

<header>
<h1>json and ajax</h1>
<button id="btn">3마리 동물을 봅시다!</button>
</header>


<div id="animal-info"></div>


<script src="js/main.js"></script>

</body>
</html>


#main.js


var pageCounter = 1;
var animalContainer = document.getElementById('animal-info');
var btn = document.getElementById("btn");

//3마리 동물 버튼이 클릭됐을때 ajax를 통해서 json 파일을 가져온다.
btn.addEventListener("click",function(){

var ourRequest = new XMLHttpRequest();
//받을때 GET, 보낼때 POST
//url을 동적으로 만들어 주기!
ourRequest.open('GET','http://210.222.15.224:81/json/json-'+ pageCounter +'.json');
ourRequest.onload = function(){
//콘솔로 받은 json데이터 확인
//console.log(ourRequest.responseText);

//json 데이터를 변수에 담고
//var ourData = ourRequest.responseText;
//출력 -> '[' 표시만 나온다. 브라우저가 그냥 텍스트 파일이라고 생각해서 발생한 오류
//console.log(ourData[0]);

//해결법: 브라우저에 텍스트가 아닌 json 배열 객체라고 알려주기


//url 연결에 성공했을때 와 실패했을때 에러 컨트롤하기
if(ourRequest.status >= 200 && ourRequest.status < 400){
var ourData = JSON.parse(ourRequest.responseText);
//console.log(ourData[0]);
renderHTML(ourData);
}else{
console.log("we connected to the server, but it returned an error.");
}
};


//url 연결에 실패했을 때
ourRequest.onerror = function(){
console.log("connection error");
}

//ajax 성공했을때 내보내기
ourRequest.send();

//동적 url 페이지를 위한 변수 증가
pageCounter++;

//json 페이지가 3장이기 때문에 버튼을 3번 이상 클릭하면 다시 1로 값을 초기화 시켜 주기
if(pageCounter>3){
pageCounter=1;
}

});


//json 데이터를 가공해서 html에 붙여 주기
function renderHTML(data){

var htmlString ="";

//이중for 문으로 json 배열에 담긴 객체 데이터와 그 객체 안에 있는 배열 데이터 출력
for(i=0; i<data.length;i++){
htmlString += "<p>" + data[i].name + "는" + data[i].species +" that likes to eat";
for(ii=0; ii<data[i].foods.likes.length; ii++){

//첫번째 foods.likes 아이템이면 그냥 출력
if(ii==0){
htmlString += data[i].foods.likes[ii];
}else{
//두번째 아이템 부터
htmlString += " and "+data[i].foods.likes[ii];
}
}//--두번째 객체안에 키:value 배열 likes for 문 끝

htmlString += ' and dislikes ';

for(ii=0; ii<data[i].foods.dislikes.length; ii++){

//첫번째 foods.dislikes 아이템이면 그냥 출력
if(ii==0){
htmlString += data[i].foods.dislikes[ii];
}else{
//두번째 아이템 부터
htmlString += " and "+data[i].foods.dislikes[ii];
}
}//마지막 객체안에 키:value 배열 dislikes for 문 끝



} //--첫번째 배열 안에 객체 뽑아내기 for 문 끝




htmlString += '.</p>';

//div 객체에 붙이기
animalContainer.insertAdjacentHTML('beforeend',htmlString);

}



//------------------------------참고-----------------------------------------------
//자바스크립트 객체
//선언 var = myCat = {"key":"value"}
//접근 myCat.key


//자바스크립트 배열
//선언 var myFavColors = ["blue","green","purple"]
//접근 myFavColors[1]


// 합체
// var thePets = [
// {
// "key1":"value1" ,
// "key2":"value2"
// },
//
// {
// "key1":"value1" ,
// "key2":"value2"
// }
// ]


//접근 thePets[1].key1;


#json-1.json

[
{
"name": "Meowsy",
"species": "cat",
"foods": {
"likes": [
"tuna",
"catnip"
],
"dislikes": [
"ham",
"zucchini"
]
}
},
{
"name": "Barky",
"species": "dog",
"foods": {
"likes": [
"bones",
"carrots"
],
"dislikes": [
"tuna"
]
}
},
{
"name": "Purrpaws",
"species": "cat",
"foods": {
"likes": [
"mice"
],
"dislikes": [
"cookies"
]
}
}
]


#json-2.json

[
{
"name": "Whiskers",
"species": "cat",
"foods": {
"likes": [
"celery",
"strawberries"
],
"dislikes": [
"carrots"
]
}
},
{
"name": "Woof",
"species": "dog",
"foods": {
"likes": [
"dog food"
],
"dislikes": [
"cat food"
]
}
},
{
"name": "Fluffy",
"species": "cat",
"foods": {
"likes": [
"canned food"
],
"dislikes": [
"dry food"
]
}
}
]


#json-3.json


[
{
"name": "Kitty",
"species": "cat",
"foods": {
"likes": [
"fresh food"
],
"dislikes": [
"stale food"
]
}
},
{
"name": "Pupster",
"species": "dog",
"foods": {
"likes": [
"tomatoes",
"peas"
],
"dislikes": [
"bread"
]
}
},
{
"name": "Tux",
"species": "cat",
"foods": {
"likes": [
"fancy dishes"
],
"dislikes": [
"basic cat food"
]
}
}
]


자료 출처:https://learnwebcode.github.io/json-example/animals-1.json

https://learnwebcode.github.io/json-example/animals-2.json

https://learnwebcode.github.io/json-example/animals-3.json

반응형

댓글