프로그래밍

자바스크립트 도와주실분

    var xhr = new XMLHttpRequest();

 

    xhr.onreadystatechange = function () {

    // console.log("xhr.readyState : " + xhr.readyState);

        if (xhr.readyState === 4) {

        // console.log("xhr.status : " + xhr.status);

            if(xhr.status === 200) {

                

                var data = JSON.parse(xhr.responseText);

             

            } else {

                console.log(xhr.responseText);

            }

        }

};

 

xhr.open('GET', 'www.naver.com');

xhr.send();

 

 

 

var data = JSON.parse(xhr.responseText); <- 이부분을 다른 함수에서 사용하고 싶은데 어케 해야돼?

 

function a () {

var data = JSON.parse(xhr.responseText);

}

이런식으로...

시작한지 얼마 안돼서 모르겠다 몇시간째 하는중 ㅠㅠ

도와주셈..

 

33개의 댓글

2020.05.28

대충 읽고 답함

 

var data = a();

 

function a(){

var result = blahblah~~;

 

return result;

}

0
2020.05.28
@개또라이

잘 모루겠씁니다...

0
2020.05.28
@우이에엥

아랫분 말은 전역변수 활용하란거고용

님이 원하는 질문의도를 제가 파악한 바로는

공통함수 생성 같아서 요래답함

 

키워드 전역변수,공통함수

 

0
2020.05.28
@개또라이

찾아보겠읍니다!

0
2020.05.28

var data선언을 밖에서 해주면됨.

펑션 안에서선언된 변수라서 저기서만 쓰이는것.

밖에서 널값이든 임시값이든 넣고

펑션에서 가죠다쓰면뎀

0
2020.05.28
@짱구아빠

var data;

 

var xhr = new XMLHttpRequest();

 

xhr.onreadystatechange = function () {

// console.log("xhr.readyState : " + xhr.readyState);

if (xhr.readyState === 4) {

// console.log("xhr.status : " + xhr.status);

if(xhr.status === 200) {

data = JSON.parse(xhr.responseText);

console.log(data);

 

} else {

console.log(xhr.responseText);

}

}

};

 

xhr.open('GET', 'www.naver.com');

xhr.send();

 

 

console.log(data);

 

이렇게 하니까 함수 안에 있는건 로그가 찍히는데 밖에 있는건 안찍힙니다.. ㅠㅠ

0
2020.05.28
@우이에엥

함수 안에 if두개있는데 어디 타고있는지 확인.

제이슨 파스 하고있는데

데이터 변수가 값을 제대로 설정받고있는지 확인.

펑션 외부에서 선언된 변수가 정상적으로 펑션을 탔으면 값을 받는게맞음.

xhr.status가 200이 아니면 값을 못받으니 안찍는게 맞음

0
2020.05.28
@짱구아빠

if문 안에 있는건 data 로그가 잘 찍히는데 밖에 있는건 xhr.status가 200이 아니라서 data를 못가져 온다는 말이신가요??

0
2020.05.28
@우이에엥

if문에서 로그찍는게 두가지임.

status가 200이묜 json.parse를 타서 data를 출력하지만

아닌경우 data에대한 설정은 없고 xhr.리스폰스텍스트 만을 출력함.

해당 펑션을 정상적으로 탔더라도

status가 200이 아닐경우 ,data에대한 어떤 설정도없음. 선언만된 채로 값이없는상태.

 

1. if문에서 어디로 빠지는지 확인할것.

2. if문 어디서든 data값이 설정되도록 동일하게 적용할것.

 

 

0
2020.05.28
@우이에엥

onreadystatechange는 비동기식이라서 그런거 아닌가 싶은데

 

 

onreadystatechange 에 객체상태값이 도달하는시간보다

 

아래 console.log가 먼저 실행되서 그럼

 

0
2020.05.28
@개또라이

흠.. ㅠㅠㅠ

0
2020.05.28
@우이에엥

자바스크립트 동기 비동기 처리 구글링 해봐 처음에는 꽤 어려움

0
2020.05.28
@우이에엥

https://keichee.tistory.com/m/202

0
2020.05.28

동기식이란

 

var 주머니

 

주머니 = 돈

 

소매치기 결과 : 돈

 

비동기

 

var 주머니

 

주머니에 돈을 넣을려고 인출을 하고있는데~~~

 

소매치기당함

 

그결과 도둑놈손엔 들린게 없음

0
2020.05.28
@개또라이

그렇다면 동기식으로 바꿔주거나 콜백함수로 넘겨줘야 하는 건가요 어렵네요ㅕ ㅠㅠㅠㅠㅠ

0
2020.05.28
@우이에엥

네 정답입니다. 그러면댐

0
2020.05.28
@개또라이

질문해도 될까요??

0
2020.05.28
@우이에엥

자야하는디 뭐죠

0
2020.05.28
@개또라이

댓글에 썼습니다

0
2020.05.28

function baseData (callback) {

 

var xhr = new XMLHttpRequest();

 

xhr.onreadystatechange = function () {

// console.log("xhr.readyState : " + xhr.readyState);

if (xhr.readyState == 4 && xhr.status === 200) {

// console.log("xhr.status : " + xhr.status);

var data = JSON.parse(xhr.responseText);

callback(data);

}

};

 

xhr.open('GET', '');

xhr.send();

 

}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

var mainData = function (data) {

var bgImage = data.filePath.bgImage;

var homeEntity = data.homeEntity;

 

var divs = document.getElementsByClassName('entitybox');

function setBackgroundImg(background) {

var div = document.getElementById('mainview');

div.style.backgroundImage = "url('" + background + "')";

}

 

setBackgroundImg(bgImage);

 

for (var i=0; i < divs.length; i++) {

var entityImg = document.createElement('img');

entityImg.setAttribute('id', "homeEntity" + homeEntity[i].id);

entityImg.setAttribute('class', "homeEntity" + homeEntity[i].location);

entityImg.src = homeEntity[i].entityImage;

divs[i].appendChild(entityImg);

}

}

 

위에 링크랑 콜백이런거 찾아보고 해봤는데 지금 이상태에서 저기 비동기로 받아온 var data = JSON.parse(xhr.responseText);

callback(data); 이것을 mainData 함수에 가져가서 쓰고 싶읍니다...

뭔가 될거같은데 안됩니다... ㅠㅠㅠㅠㅠ

0
2020.05.28
@우이에엥

일단 콜백 빼구요

 

손으로 그려주면 찬 간단할텐데 글로 설명하려니참...

 

xhr.onreadystatechange 이부분은 여기 소스상에 없다고 생각하면 되는 상태입니아

0
2020.05.28
@우이에엥

그러니 var data 자체가 아예 생성이 안

된상태에요.

 

그상태에서 작업 다 돌리고 나면

그때서야 xhr.onreadystatechange 부분이 생성됨

 

0
2020.05.28
@개또라이

 

그러면 저기서 var data = JSON.parse(xhr.responseText); 이부분을 다른 함수에서 사용하는게 불가능한건가요?

0
2020.05.28

음...

 

님 이거 도와주기 힘드네요

 

저도 개념이 한참 모자라지먼

 

이건 좀 너무 개념이 안잡혀잇어서

설명하기도 힘드네요.

 

전역변수 지역변수 변수 함수 파라미터 부터 개념이 안잡혀잇는거같음... ㅈㅅ 토낌

0
2020.05.28

물론 공부중이고 초반이니 이해는 하는데

 

이렇게 공부하시면 안되실거같아요.

 

다시 인강이라도 보고 새출발하세요

 

님이 보기엔 제가 런하는거 처럼 보일거에요

 

근데

 

정말 죄송하지만 이건 소스가 아님니다...

 

공부 열심히 하세요

0
2020.05.28
@개또라이

감사합니다 ㅠㅠ

0
2020.05.28

프레임워크 안씀?

0
2020.05.28
@혼란의카오스

바닐라만 연습해보는 중이라 ㅋㅋ 어제 다 했음 혼자

0
2020.05.28

var data = JSON.parse(xhr.responseText); 이걸 재사용할 수 있도록 하고 싶단건가?

 

아님 var data를 밖으로 빼내고 싶은거?

0
2020.05.28
@Tbps

어제 혼자 다 했삼 ㄳㄳ

0
2020.05.28

 

function a (text) {

 

var data = JSON.parse(text);

 

}

 

****

 

if(xhr.status === 200) {

 

a(xhr.responseText);

}

 

 

하려는게 이거아냐?

0
2020.05.28
@URA!!

그냥 콜백으로 빼면 되더라고여 자바스크립트 시작한지 며칠 안돼서 ㅠ

0
2020.05.28

var p = new Promise(resolve, reject){

....

resolve(xhr.responseText);

}

 

 

대충이렇게 만들어두고

 

var text = async func();

 

하면 text에 responseText 들어감

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180664 [컴퓨터] SSD를 마이그레이션 떴는데 부팅 선택이 안됨 2 참치는동원 0 4 시간 전 41
180663 [컴퓨터] 이제 논KCPU는 기본쿨러+HB보드로만 조립해야할듯 Vv연옥의사신vV 0 5 시간 전 70
180662 [컴퓨터] 중국 모니터 살까 생각중임 3 너가전부옳아 0 6 시간 전 97
180661 [컴퓨터] 얼마전에 고장나서 다 뒤집어깠다던 개붕이인데 1 밀실심사 0 7 시간 전 90
180660 [잡담] 15일에 ㄷㄱㄷㄱ 첫조립 해야지 1 함박눈 0 7 시간 전 57
180659 [잡담] 스피커 소리가 안ㄴ남 ㅜㅜ 도움!! 匠人 0 8 시간 전 39
180658 [컴퓨터] 5700x3D가 작업에서 그리 못써먹을정돈가?? 5 포츈아그렇구나 0 9 시간 전 183
180657 [컴퓨터] 애플 매직트랙패드 이거 재밌다 4 해날 0 9 시간 전 140
180656 [컴퓨터] 컴터 업글 질문좀 받아줘 5 lake 0 10 시간 전 66
180655 [컴퓨터] 유튜브 재생 버벅임/렉 문제 개인해결함 6 GLaDOS 0 11 시간 전 122
180654 [잡담] 스위치2 나오면 사려는데 7 00원짜리 0 12 시간 전 128
180653 [잡담] 배틀메이지랑 셀레스티얼 연기루머 뭐임ㅋㅋㅋㅋㅋㅋㅋ 3 Gargantua 1 12 시간 전 68
180652 [컴퓨터] 노트북 선택좀 도와주세요! 2 두부는초장에찍먹 0 13 시간 전 86
180651 [모바일] 이심에서 유심으로 이식하는거 좀 아는 사람 있음까.. 6 ULTEGRA 0 14 시간 전 89
180650 [잡담] 시놀로지 223j랑 베스테이션이랑 뭐가 더 좋음?? 10 고민된다여 0 16 시간 전 90
180649 [컴퓨터] 2.5 SSD -> M.2 체감됨? 13 스피오스피오스피... 0 16 시간 전 251
180648 [모바일] 아이폰16 VS SE4 + 워치 6 누군가는해야하잖아 0 17 시간 전 208
180647 [컴퓨터] 형님들 급함!! 기존 HDD사용중 SDD추가 할려는데 윈도우 2 아응에 0 17 시간 전 93
180646 [컴퓨터] 와이파이에서 직결로 바꾸니 빠르네 즈기 0 17 시간 전 167
180645 [컴퓨터] 모니터가 눈이 아픈데 조정가능함?? 정글은언제나맑음... 0 17 시간 전 42