어휴~~밤을 꼬박 샜는데...똑같은 문자열인데....왜 안되는지?
본문
안녕하세요.
지도 좌표값을 jquery로 쿼리해서 뿌려주는 작업입니다.
$.ajax({
url: 'https://sample.co.kr/skin/content/map/query.php',
data: { lat: latitude, lng: longitude },
method: 'GET',
success: function(positions) {
....생략
질문) 위의 success: function(positions) 아래에
console.log(positions);해서 크롬 콘솔에서 값을 보면
문자열 "[ {'lat':37.1973520849,'lng' : 125.990807372,'title': '굴업도'} ];" 이게 보입니다.
positions변수에 담긴 것을 그대로 좌표값으로 쓰면 좌표가 찍히지 않습니다.
그런데 그 문자열 그대로 아래 코드로 하면 좌표가 찍힙니다.
var positions= [ {'lat':37.1973520849,'lng' : 125.990807372,'title': '굴업도'} ];
그런데 이걸 문자열 변수로 만들어 여기에 쌍따옴표를 붙이면 좌표가 찍히지 않습니다.
var positions= "[ {'lat':37.1973520849,'lng' : 125.990807372,'title': '굴업도'} ];"
이 차이 같은데 어떻게 문제를 해결해야 할까요?
답변 5
안되는 문자열이 "[ {'lat':37.1973520849,'lng' : 125.990807372,'title': '굴업도'} ];" 이게 맞나요?
맞다면 문자열의 제일마지막에 반두점 ; 기호는 불필요한것 같습니다. 이때문에 발생하는 문제가 아닐까 생각되어 집니다.
positions.lat
positions.lng
positions.title
위와 같이 접근해 보세요
success: function(positions) {
positions = JSON.parse(positions);
console.log(positions);
}
문자열과 배열은 완전히 다른겁니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
String 와 Array 는 다른 거구요.
따옴표 없이
positions[0] 이나 positions['lat'] 으로 한번 줘 보세요.
<script>
positions= [ {'lat':37.1973520849,'lng' : 125.990807372,'title': '굴업도'} ];
document.write(positions[0]['lat']);
</script>