kaido님께서 주신 미션중에
1차원 배열에서 랜덤으로 과일을 뽑아 ajax로 받아와서 과일에 따른 색깔을 alert를 통해 출력하는 것인데
$test= array('사과', '포도', '수박');
$fruit = array_rand($test);
$test = '[{"fruit":"'.$test[$fruit].'"]}';
echo $test;
통해 랜덤으로 과일은 뽑아 왔습니다.
그리고
$(document).ready(function(){
$.ajax({
type:'get',
dateType:'json',
url:'ranajax.php',
success:function(date){
var test = JSON.parse(date);
alert(typeof(test));
if(test == '사과'){
alert('red');
}
if(test == '포도'){
alert('puple');
}
if(test == '수박'){
alert('green');
}
}
});
});
과일에 따른 색을 출력하려고 하는데 잘안되네요;
파이어버그로 확인했을 때 응답창에서는
[{"fruit":"과일이름"]
이렇게 나오구요
에러는
SyntaxError: JSON.parse: expected ',' or '}' after property value in object at line 1 column 15 of the JSON data
이런 에러가 나오는데 문법상 오류인것 같은데;;
아무리 봐도 잘못된 부분을 몾찾겠네요;;
@아플바
$test = '[{"fruit":"'.$test[$fruit].'"}]';
수정했는데도
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON date
오류가 계속 뜨네요 ㅜㅜ 어디가 문제 인지 참;;
자체 해결 하였습니다.
dataType:'json'을 삭제 해주니 잘되네요;
dataType:'json' 설정해놓고
JSON.parse함수를 사용하면 에러가 뜨는데 왜;;
에러가 뜨는지 알려주실분 계실까요 ??
http://credemol.blogspot.kr/2011/08/jquery-ajax-datatype-json.html
저도 몰라서 찾아보니깐 여기글 보니깐 이해가 되네요
@An녕
답변감사합니다
달아주신 링크도 몰라서 찾아보았을때 보았던건데 그글을 읽어도 제대로 이해가 안되서 ㅜㅜ
$test= array('사과', '포도', '수박');
$fruit = array( 'fruit' => $test[array_rand($test)] );
echo json_encode($fruit, JSON_UNESCAPED_UNICODE);
소스는 이렇게 하시는게 좀더 깔끔할거 같애용.
@박준영
답변감사합니다 ^^
넵 그렇게 고쳐야 겠네요
dateType:'json'
이미 json 타입으로 받으셨습니다.
JSON.parse(date) 이건 하지 않아도 됩니다.
type 을 제거 하면 디폴트가 text 라서 text 타입을 반대로 JSON으로 파싱 하셔서 된것입니다.
if(date.fruit == "사과"){ ... }
이런식으로 간단하게 표현 하시면 됩니다.
팁으로 제가 json이 아니여도 표현이 가능 하다고 했던것중 하나 입니다.
방법에 따라서는 효율적 일 수도 있습니다.
dateType : 'html' //html 타입으로 받으시고
$test= array('사과', '포도', '수박');
$fruit = array_rand($test);
if($fruit == "사과"){$color = "red";}
if($fruit == "포도"){$color = "puple";}
if($fruit == "수박"){$color = "green";}
echo "<script> alert(' ".$color." '); </script> ";
이런 방법도 가능 합니다.
이 방식은 생각 이상으로 활용도가 높습니다.
3번째줄에서 뒤에 괄호 순서 바뀌었네요 ]} => }]
$test='[{"fruit":"'.$test[$fruit].'"]}'