한개는 아까 게시판에서 동작하지 않는 소스였는데 동작하고 다른 소스 하나 역시 IE8에서 동작하지 않네요. 블록

첫번째 것은 소스를 직접 페이지에 올려서 구현한 건데 제로보드4에서 동작하지 않던 게 여기선 동작합니다. IE8에서 테스트했습니다. 두번째 소스는 예전에 AJAX jsonp를 공부하다가 만든 예제인데 이것도 IE8에서 동작하지 않습니다. jsonp3.html

왜 이런 걸까요? 모르겠네요. ㅡ_ㅡ;

첫번째 소스 동작 페이지: http://www.blrun.net/eight/php/study/json3.html
두번째 소스 동작 페이지: http://www.blrun.net/eight/php/study/jsonp3.html

[제로보드 IE8에서 동작하지 않던 소스 - json3.html]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!-- 출처: http://www.lennu.net/jquery-ajax-example-with-json-response/ -->
<!DOCTYPE html> 
<html>
<head>
<title>jQuery Ajax Example with JSON Response</title>
<script src="/bbs/syntaxhighlighter/scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<!-- 여기에 자바스크립트 코드를 기술한다 -->
<script type="text/javascript">
$(document).ready(function(){
    $(':button').on('click', function() { // 이것은 버튼이 클릭됐을 때 발생하는 이벤트
        var button = $(this).val();
        $.ajax({ // ajax 호출 시작
            type: "POST",
            url: "http://www.blrun.net/eight/php/study/serverside.php", // JQuery가 serverside.php를 로드함
            dataType: "json", // JSON datatype을 설정
            data: {"button":escape($(this).val())} // 클릭된 버튼의 값을 보내준다
        })
        .done(function(data) { // 변수 data는 서버사이드로부터 받은 데이타를 담고 있다.
            $('#wines').html(''); // #wines div 값을 초기화 한다.
            if (button == '모든') { // 클릭된 버튼이 all 이라면 모든 와인을 표시해 준다.
                for (var i in data.red) {
                    $('#wines').append('Red wine: ' + data.red[i] + '<br/>');
                }
                for (var i in data.white) {
                    $('#wines').append('White wine: ' + data.white[i] + '<br/>');
                }
            }
            else if (button == '빨강') { // 클릭된 버튼이 red 라면 빨간 와인을 표시해 준다.
                for (var i in data) {
                    $('#wines').append('Red wine: ' + data[i] + '<br/>');
                }
            }
            else if (button == '흰색') { // 클릭된 버튼이 white 라면 흰색 와인을 표시해 준다.
                for (var i in data) {
                    $('#wines').append('White wine: ' + data[i] + '<br/>');
                }
            }
        });
        return false; // 페이지가 리프레쉬되지 않게 유지해 준다. 
    });
});
</script>
</head>
<body>
<form method="post" action="">
    <button value="모든" type="button">모든 와인들을 가져온다!</button>
    <button value="빨강" type="button">빨간 와인들을 가져온다!</button>
    <button value="흰색" type="button">흰색 와인들을 가져온다!</button>
</form>
<div id="wines">
<!-- 현재 페이지에서 작업을 끝마쳤을 때 Javascript가 여기에 data를 프린트할 것이다. -->
</div>
</body>
</html>
 

[제로보드 IE8에서 동작하지 않던 소스 서버측 - serverside.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
header("Content-Type: application/javascript; charset=utf-8");
 
// 클릭된 버튼의 값을 가져온다.
$button = $_POST['button'];
 
// 빨간색, 흰색 와인 테이블
$red = array('Chianti(치안티)', 'Barolo(바롤로)', 'Pinot Noir(피놋 노이르)');
$white = array('Chardonnay(차돈네이)', 'Cava(카바)', 'Chablis(채블리스)');
 
// 흰색과 빨간색 테이블을 하나의 다중배열 테이블로 결합한다.
$winetable = array(
    "red" => $red,
    "white" => $white
);
 
// 마지막으로 버튼값에 따라 와인테이블을 JSON 인코딩을 해주고 그것을 출력한다.
if ($button == "빨강") {
    print json_encode($red);
}
else if ($button == "흰색") {
    print json_encode($white);
}
else {
    print json_encode($winetable);
}
?>

===================================================================================

[IE8에서 동작하지 않는 jsonp 예제 - jsonp3.html]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<!DOCTYPE html>
<html>
<head>
<title>JSONP Echo Client</title>
<meta charset="EUC-KR" />
<script>
function jsonp(url) {
    var head = document.head;
    var script = document.createElement("script");
 
    script.setAttribute("src", url);
    head.appendChild(script);
    head.removeChild(script);
}
 
function jsonpCallback(data) {
    //document.getElementById("myDiv").innerHTML = JSON.stringify(data);
    document.getElementById("myDiv").innerHTML = unescape(data.message)+"<br><br>";
}
 
function loadXMLDoc()
{
    jsonp("http://run.iptime.org:84/eight/php/study/jsonp2.php?callback=jsonpCallback&message="+escape('안녕하세요 이윤찬입니다!'));
}
</script>
</head>
<body>
<div id="myDiv"><h4>JSONP로 이 문장을 화면 깜빡임 없이 바꿔보자!<br>(다른 서버로 데이타 전송 후 받음 - Javascript 이용!)</h4></div>
<form method="post" action="">
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</form>
</body>
</html>
 

[IE8에서 동작하지 않는 jsonp 예제 서버측 - jsonp2.php]
1
2
3
4
5
6
7
8
9
<?php
//header('Content-Type: text/html; charset=utf-8');
header("Content-Type: application/javascript; charset=utf-8");
 
$callback = $_GET["callback"];
$message = $_GET["message"];
$json = "{'message':'".$message ."'}";
echo $callback."(".$json.")";
?>
 


덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색