오토세이브 테스트 하면서 "$ 는 null 이거나 개체가 아닙니다" 부터 막히네요. 블록

이 오류가 왜 뜨는지 모르겠습니다.


이 예제에선 잘만 되던 ajax 코드가 다음과 같은 write.php 와 board_imsi_ok.php 와 연동 부분에선 먹통이네요. 이것 때문에 일이 전혀 진척이 되고 있질 못합니다.

IE에선 246행에서 "$ 는 null 이거나 개체가 아닙니다" 란 자바스크립트 오류가 뜨고 FF에서도 역시 246행에서 "TypeError: $ is undefined" 오류가 뜨네요. 어떤 jquery 파일 인클루드나 선언 위치 오류 같은 걸로 보이는데 어떻게 해결해야 할지를 모르겠습니다. ㅡ_ㅡ;

소스를 보시면 아시겠지만 281행에서 autoSave() 함수를 30초마다 실행하도록 돼 있습니다.

[클라이언트 측- write.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
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
<!--
ZeroBoard에 대한 라이센스 명시입니다.
 
아래 라이센스에 동의하시는 분만 제로보드를 사용할수 있습니다.
    
프로그램명 : Zeroboard
배포버젼 : 4.1 pl 8 (2007. 5. 23)
개발자 : zero 
Homepage : http://zeroboard.com
 
1. 제로보드의 배포권은 ZEROBOARD.COM에서 허용한 곳에만 있습니다.
   (허락 맡지 않은 재배포는 허용하지 않습니다.)
 
2. 제로보드는 저작권을 아래 3번항목에 의해 표기하는 한도내에서
   개인홈페이지 및 학교나 교회등의 비영리단체, 기업이나 기타 영리단체에서 사용할수 있습니다.
   (반국가 단체나 불법 싸이트에서의 사용은 금지합니다)
 
3. 제로보드 사용시 저작권 명시부분을 훼손하면 안됩니다.
   프로그램 소스, html소스상의 라이센스 및 웹상 출력물 하단에 있는 카피라이트와 링크를 수정하지 마십시요.
   (저작권 표시는 게시판 배포시 작성된 형식만을 허용합니다. 임의 수정은 금지합니다)
 
4. 단, 정식 등록버젼은 저작권 표시를 삭제할수 있습니다.
   정식 등록버젼에 대한 문의는 http://zeroboard.com 에서 문의 방법을 찾아주시기 바랍니다.
 
5. 링크서비스등의 기본 용도에 맞지 않는 사용은 금지합니다.
 
6. 제로보드의 사용으로 인한 데이타 손실 및 기타 손해등 어떠한 사고나 문제에 대해서 ZEROBOARD.COM은 절대 책임을 지지 않습니다.
 
7. 제로보드에 대해 ZEROBOARD.COM은 유지/ 보수의 의무가 없습니다.
 
8. 제로보드 소스는 개인적으로 사용시 수정하여 사용할수 있지만 수정된 프로그램의 재배포는 금지합니다.
   (저작권 관련 부분은 수정금지입니다)
 
9. 제로보드에 쓰인 스킨의 저작권은 스킨 제작자에게 있으며 제작자의 동의하에 수정배포가 가능합니다.
 
10. 기타 의문사항은 http://zeroboard.com 을 이용해 주시기 바랍니다.
    (질문등에 대한 내용은 메일로 받지 않습니다)
 
 
※변경사항: 제로보드4 수정 배포판에 대한 공지 (2009.9.11)
 
제로보드4는 사실상 개발이 중단되었습니다.
 
개발 중단 이유는 개발을 하게 되면 그간 공유된 일만 여개의 스킨이나 플러그인을 더 이상 사용할 수 없기 때문입니다.
스킨이나 플러그인등을 개발하셨거나 이용하신 분들은 아시겠지만 대부분 제로보드4의 기본 DB 정보에 제로보드4를 라이브러리 형식으로 이용하는 구조였기에 제로보드4 기본 파일들의 수정이나 개선시 동작하지 않을 수 밖에 없습니다.
 
제로보드4는 아시다시피 Copyright 이고 상표권이 등록되어 있습니다.
하지만 수정 재배포에 대해서는 허가를 하였습니다.
 
따라서 제로보드4를 기반으로 수정 및 기능 개선을 하여 다른 프로그램으로서 배포하시는 것 역시 가능합니다.
다만 제로보드, zeroboard 와 같은 이름은 쓰실 수 없습니다.
법적으로 쓰실 수 없는 이유도 있지만 제로보드4 가 더 이상 새로운 사이트 개발에 사용되기를 원치 않는 원 개발자의 희망도 있기 때문이니 이해하여 주시기 바랍니다.
 
다만 제로보드4 개작 프로그램에 대해서 여기 제로보드4 공식사이트에 소개하시는 등의 모든 행위는 가능하고 제한이 없습니다.
 
제 관점에서 추가 개발이 불가능하다고 판단하였지만 혹시 다른 관점 혹은 개념으로 개작을 하여 재배포 하실 분들이 있으실 것입니다.
 
프로그램을 배포한다는 것이 많은 책임과 어려움이 있지만 그럼에도 불구하고 개작 프로그램을 위해 노력하고 다른 분들을 위해 배포하실 분들이 있으시면 진심으로 건승을 빌고 그로 인해 더 풍요로운 인터넷 세상이 되기를 바랍니다.
 
 
※기타사항: 제로보드는 무료입니다. 하지만 구매를 원하시는 분은 보세요. (2001.7.27)
 
제로보드는 기본적으로 무료배포 하고 있는 이른바 공짜 CGI입니다.
 
개인이든, 상업적 사이트든, 단체등 어떤곳이든지 무료입니다.
 
하지만 제로보드 사용의 가장 기본적인 의무가 저작권 표시입니다.
 
그런데 상업적인 사이트들이나 단체에서는 경우 부득이 하게 저작권을 삭제해야 할 경우가 있습니다.
 
이미 이런 문제가 여러번 발생하였고, 이런 문제중에 매우 마음이 아픈 사건도 있었기에 제로보드의 저작권을 삭제하는 것에 대해서만 제로보드 판매를 합니다.
 
제로보드 구입버젼과 무료배포본과의 차이는 단지 저작권 표시 유무일 뿐입니다.
 
그외의 어떤 기술적인 지원이나 설치등의 지원도 해드리지 않으며, 손해 발생시에도 책임지지 않습니다.
 
제로보드를 단지 좋다든지 쓰기 편하다는 소문만 듣고 구입하시지 말고, 사용해 보았거나, 사용하고 있는데 부득이 하게 저작권을 삭제해야 할 경우가 생기실때만 구입하시기 바랍니다.
 
제로보드 구매를 위한 방법은 register@nzeo.com으로 메일 보내주시기 바랍니다.
 
* 요즘 메일 바이러스 때문에 제 메일서버가 제대로 메일을 받지 못하는 경우가 있습니다.
  답변이 며칠 늦어질수도 있으니 양해해주시기 바랍니다.
 
※오픈소스 게시판 수정증보판(제로보드4 개작) 개발자: 이윤찬(blrun@daum.net)
-->
<html> 
<head>
<title>자유게시판</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<meta name="viewport" content="width=device-width">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="image_src" href="/blrun2_fb.jpg">
<link rel="alternate" type="application/rss+xml" title="네티즌 세상을 위하여..." href="http://blrun.net/rss/">
<link rel=StyleSheet HREF=skin/nzeo_ver4_bbs/style.css type=text/css title=style>
 
<!-- SyntaxHighlighter 관련 헤더 -->
<link rel="stylesheet" type="text/css" href="syntaxhighlighter/styles/shThemeDefault.css" />
<link rel="stylesheet" type="text/css" href="syntaxhighlighter/styles/shCore.css" />
<SCRIPT type="text/javascript" src="syntaxhighlighter/scripts/jquery-1.7.1.min.js"></SCRIPT>
<script type="text/javascript" src="syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="syntaxhighlighter/scripts/shAutoloader.js"></script>
<SCRIPT type="text/javascript" src="syntaxhighlighter/scripts/jQuery.js"></SCRIPT>
<!-- SyntaxHighlighter 관련 헤더 끝 -->
 
<script language='JavaScript'>
var select_obj;
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
function ZB_layerAction(name, status, myEvent) {
    var obj = document.getElementById(name);
    var _tmpx, _tmpy, marginx, marginy;
    
    _tmpx = myEvent.clientX + parseInt(obj.offsetWidth);
    _tmpy = myEvent.clientY + parseInt(obj.offsetHeight);
    _marginx = document.body.clientWidth - _tmpx;
    _marginy = document.body.clientHeight - _tmpy;
 
    var scrollLeft = (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft;
    var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
    
    if (_marginx < 0)
        _tmpx = myEvent.clientX + scrollLeft + _marginx;
    else
        _tmpx = myEvent.clientX + scrollLeft;
    if (_marginy < 0)
        _tmpy = myEvent.clientY + scrollTop + _marginy + 20;
    else
        _tmpy = myEvent.clientY + scrollTop;
 
    obj.style.left = (_tmpx - 13) + "px";
    obj.style.top = (_tmpy - 12) + "px";
 
    if (status == 'visible') {
        if (select_obj) {
            select_obj.style.visibility = 'hidden';
            select_obj = null;
        }
        select_obj = obj;
    } else {
        select_obj = null;
    }
    obj.style.visibility = status;
}
 
function decode64(input) {
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
    while (i < input.length) {
        enc1 = this._keyStr.indexOf(input.charAt(i++));
        enc2 = this._keyStr.indexOf(input.charAt(i++));
        enc3 = this._keyStr.indexOf(input.charAt(i++));
        enc4 = this._keyStr.indexOf(input.charAt(i++));
        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;
        output = output + String.fromCharCode(chr1);
        if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
        }
    }
    output = utf8_decode(output);
    return output;
}
 
function utf8_decode(utftext) {
    var string = "";
    var i = 0;
    var c = c1 = c2 = 0;
    while (i < utftext.length) {
        c = utftext.charCodeAt(i);
        if (c < 128) {
            string += String.fromCharCode(c);
            i++;
        }
        else if ((c > 191) && (c < 224)) {
            c2 = utftext.charCodeAt(i + 1);
            string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
            i += 2;
        }
        else {
            c2 = utftext.charCodeAt(i + 1);
            c3 = utftext.charCodeAt(i + 2);
            string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
    return string;
}
 
function print_ZBlayer(name, homepage, mail, member_no, boardID, writer, traceID, traceType, isAdmin, isMember) {
    var printHeight = 0;
    var printMain="";
 
    if(homepage) {
        printMain = "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('"+homepage+"');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_homepage.gif border=0 align=absmiddle>&nbsp;&nbsp;홈페이지&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(mail) {
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=location.href='mailto:"+decode64(mail)+"';><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_mail.gif border=0 align=absmiddle>&nbsp;&nbsp;메일 보내기&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(member_no) {
        if(isMember) {
            printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('view_info.php?member_no="+member_no+"','view_info','width=400,height=510,toolbar=no,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_memo.gif border=0 align=absmiddle>&nbsp;&nbsp;쪽지 보내기&nbsp;&nbsp;</td></tr>";
            printHeight = printHeight + 16;
        }
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('view_info2.php?member_no="+member_no+"','view_info','width=400,height=510,toolbar=no,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_information.gif border=0 align=absmiddle>&nbsp;&nbsp;회원정보 보기&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(writer) {
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=location.href='zboard.php?id="+boardID+"&sn1=on&sn=on&ss=off&sc=off&keyword="+writer+"';><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_search.gif border=0 align=absmiddle>&nbsp;&nbsp;이름으로 검색&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(isAdmin) {
        if(member_no) {
            printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('open_window.php?mode=i&str="+member_no+"','ZBremote','left=1,top=1,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_modify.gif border=0 align=absmiddle>&nbsp;&nbsp;<font color=darkred>회원정보 변경&nbsp;&nbsp;</td></tr>";
            printHeight = printHeight + 16;
        }
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('open_window.php?mode="+traceType+"&str="+traceID+"','ZBremote','width=870,height=500,left=1,top=1,toolbar=no,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_relationlist.gif border=0 align=absmiddle>&nbsp;&nbsp;<font color=darkred>관련글 추적</font>&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    
    }
    var printHeader = "<div id='"+name+"' style='position:absolute; left:10px; top:25px; width:127; height: "+printHeight+"; z-index:1; visibility: hidden' onMousedown=ZB_layerAction('"+name+"','hidden',event)><table border=0><tr><td colspan=3 onMouseover=ZB_layerAction('"+name+"','hidden',event) height=3></td></tr><tr><td width=5 onMouseover=ZB_layerAction('"+name+"','hidden',event) rowspan=2>&nbsp;</td><td height=5></td></tr><tr><td><table style=cursor:pointer border='0' cellspacing='1' cellpadding='0' bgcolor='black' width=100% height=100%><tr><td valign=top bgcolor=white><table border=0 cellspacing=0 cellpadding=3 width=100% height=100%>";
    var printFooter = "</table></td></tr></table></td><td width=5 rowspan=2 onMouseover=ZB_layerAction('"+name+"','hidden',event)>&nbsp;</td></tr><tr><td colspan=3 height=10 onMouseover=ZB_layerAction('"+name+"','hidden',event)></td></tr></table></div>";
 
    document.writeln(printHeader+printMain+printFooter);
}
 
function category_change(obj) {
    var myindex=obj.selectedIndex;
    document.search.category.value=obj.options[myindex].value;
    document.search.submit();
    return true;
}
</script>
 
<script language="javascript">
function autoSave()
{
    $.ajax({
        type: "POST",
        url: "http://www.blrun.net/bbs/board_imsi_ok (1).php",
        dataType: "json",
        data: $("#write").serialize(),
        success: function(data) {
            $('#myDiv').html('<table>');
            $('#myDiv').append('<tr><td>' + unescape(data.id) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.no) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.category) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.notice) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.password) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.name) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.email) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.homepage) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.use_html) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.reply_mail) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.is_secret) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.subject) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.memo) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.sitelink1) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.sitelink2) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.reg_date) + '</td></tr>');
            $('#myDiv').append('</table>');
        }
        /*success: function(data) {
            $('#myDiv').html('<table>');
            for(var i in data) {
                $('#myDiv').append('<tr><td>' + unescape(data[i]) + '</td></tr>');
            }
            $('#myDiv').append('</table>');
        }*/
    });
}
 
var repeat = setInterval("autoSave()",30000);
 
function unlock()
{
    document.getElementById('check').value=0;
}
 
function check_submit()
{
    var rName=document.getElementById('name');
    var rPass=document.getElementById('password');
    var rSub=document.getElementById('subject');
    var rCheck=document.getElementById('check');
    if(rCheck.value==1)
    {
        alert('글쓰기 버튼을 여러번 누르시면 안됩니다');
        return false;
    }
    var myindex=document.getElementById('write').category[1].selectedIndex;
    if (myindex<1)
    {
        alert('카테고리를 선택하여 주십시요');
        return false;
    }
 
    if(!rName.value)
    {
        alert('이름을 입력하여 주세요.');
        rName.focus();
        return false;
    }
 
    if(!rPass.value)
    {
        alert('암호를 입력하여 주세요.\n\n암호를 입력하셔야 수정/삭제를 할수 있습니다');
        rPass.focus();
        return false;
    }
 
    if(!rSub.value)
    {
        alert('제목을 입력하여 주세요.');
        rSub.focus();
        return false;
    }
    var rStr=document.getElementById('memo');
    if(!rStr.value)
    {
        alert('내용을 입력하여 주세요.');
        rStr.focus();
        return false;
    }
 
    rCheck.value=1;
    show_waiting();
    hideImageBox();
 
    return true;
}
 
var imageBoxHandler;
function showImageBox(id) {
    imageBoxHandler= window.open("image_box.php?id="+id,"imageBox","width=600,height=540,resizable=yes,scrollbars=yes,toolbars=no");
}
 
function hideImageBox() {
    if(imageBoxHandler) {
        if(imageBoxHandler != 'undefined') {
            if(imageBoxHandler.closed==false) imageBoxHandler.close();
        }
    }
}
 
var codeBoxHandler;
function showCodeBox() {
    codeBoxHandler= window.open("pop_code.php","codebox","width=830,height=500,left=1,top=1,toolbar=no,scrollbars=yes");
}
 
function view_preview() {
    var rSub=document.getElementById('subject');
    var rStr=document.getElementById('memo');
 
    if(!rSub.value)
    {
        alert('글쓰기 제목을 입력하여 주세요.');
        rSub.focus();
        return false;
    }
 
    if(!rStr.value)
    {
        alert('글쓰기 내용을 입력하여 주세요.');
        rStr.focus();
        return false;
    }
    var rWrite=document.getElementById('write');
    rWrite.action = "view_preview.php";
    rWrite.target = "_blank";
    rWrite.submit();
    rWrite.action = "write_ok.php";
    rWrite.target = "_self";
 
    return true;
}
 
function preview_m() {
    var rSub=document.getElementById('subject');
    var rStr=document.getElementById('memo');
    if(!rSub.value)
    {
        alert('글쓰기 제목을 입력하여 주세요.');
        rSub.focus();
        return false;
    }
 
    if(!rStr.value)
    {
        alert('글쓰기 내용을 입력하여 주세요.');
        rStr.focus();
        return false;
    }
    var rWrite=document.getElementById('write');
    rWrite.action = "view_preview.php";
    rWrite.target = "_blank";
    rWrite.submit();
    rWrite.action = "skin/nzeo_ver4_bbs/write_ok.php";
    rWrite.target = "_self";
 
    return true;
}
 
function check_use_html(obj) {
    var c_n;
    if(!obj.checked) {
        obj.value=1;
    } else {
        c_n = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
        if(c_n) {
            obj.value=1;
        } else {
            obj.value=2;
        }
    }
}
 
function show_waiting() {
    var _x = document.body.clientWidth/2 + document.body.scrollLeft - 145;
    var _y = document.body.clientHeight/2 + document.body.scrollTop - 44;
    zb_waiting.style.posLeft=_x;
    zb_waiting.style.posTop=_y;
    zb_waiting.style.visibility='visible';
}
 
function hide_waiting() {
    zb_waiting.style.visibility='hidden';
    check_attack.check.value=0;
}
 
function insert_tag(str)
{
    var objSelection = document.selection;
    var objTextArea = document.getElementById('memo');
    objTextArea.focus();
    
    if(typeof objSelection != 'undefined'//IE
    {
        var sRange = objSelection.createRange();
        //var selectedText = sRange.text;
        sRange.text = str;
    }
    else if(typeof objTextArea.selectionStart != 'undefined'//FF
    {
        var sStart = objTextArea.selectionStart;
        var sEnd = objTextArea.selectionEnd;
        objTextArea.value = objTextArea.value.substr(0, sStart) + str + objTextArea.value.substr(sEnd);
        objTextArea.selectionStart = objTextArea.selectionEnd = sStart + 1;
    }
    else
    {
        objTextArea.value += str;
    }
}
 
function doTab(arg1){
    var k;
    if("which" in arg1){k=arg1.which;}
    else if("keyCode" in arg1){k=arg1.keyCode;}
    else if("keyCode" in window.event){k=window.event.keyCode;}
    else if("which" in window.event){k=arg1.which;}
    else{return true;}
 
    if(k == 9) {
        insert_tag("\t");
        return false;
    }
    return true;
}
</script>
<form name=check_attack><input type=hidden id=check name=check value=0></form>
<div id='zb_waiting' style='position:absolute; left:50px; top:120px; width:292; height: 91; z-index:1; visibility: hidden'>
<table border=0 width=98% cellspacing=1 cellpadding=0 bgcolor=black>
<form name=waiting_form>
<tr bgcolor=white>
    <td>
        <table border=0 cellspacing=0 cellpadding=0 width=100%>
        <tr>
            <td><img src=images/waiting_left.gif border=0></td>
            <td><img src=images/waiting_top.gif border=0><br><img src=images/waiting_text.gif></td>
        </tr>
        </table>
    </td>
</tr>
</form>
</table>
</div>
 
</head>
<body topmargin='0' leftmargin='0' marginwidth='0' marginheight='0'  onload=unlock() onunload=hideImageBox()  bgcolor=white >
<center><br><b><span style="color:black;font-size:14pt">&#160;&#160;&#160;&#160;자유게시판</span></b>&#160;&#160;<a href="/eight/" style="color:blue;font-size:9pt;">[Home]</a></center>
<div align=center>
<table border=0 cellspacing=0 cellpadding=0 width=90% height=1 style="table-layout:fixed;"><col width=100%></col><tr><td><img src=images/t.gif border=0 width=98% height=1 name=zb_get_table_width><br><img src=images/t.gif border=0 name=zb_target_resize width=1 height=1></td></tr></table>
 
<SCRIPT LANGUAGE="JavaScript">
<!--
function zb_formresize(obj) {
    obj.rows += 4;
}
// -->
</SCRIPT>
 
<table border=0 width=90% cellsapcing=1 cellpadding=0 style=table-layout:fixed>
<form method=post id=write name=write action=write_ok.php onsubmit="return check_submit();" enctype=multipart/form-data><input type=hidden name="page" value="1"><input type=hidden id="id" name="id" value="eight_bbs1"><input type=hidden id=no name=no value=""><input type=hidden name=select_arrange value="headnum"><input type=hidden name=desc value="asc"><input type=hidden name=page_num value=""><input type=hidden name=keyword value=""><input type=hidden id=category name=category value=""><input type=hidden name=sn value="off"><input type=hidden name=ss value="on"><input type=hidden name=sc value="on"><input type=hidden name=sm value="on"><input type=hidden id=mode name=mode value="write"><input type=hidden name=wantispam value="36">
<col width=80 align=right style="padding-right:10px;height:28px" class=list1></col><col class=list0 style="padding-left:10px;height:28px" width=></col>
<tr class=title>
    <td colspan=2 class=title_han align=center>&nbsp;&nbsp;새로 글 쓰기</td>
</tr>
 
<tr>
    <td width=80 align=right><font class=list_eng><b>Password</b></font></td>
    <td><input type=password id=password name=password  size=20  maxlength=20 class=input></td>
</tr>
<tr>
    <td align=right><font class=list_eng><b>Name</b></font></td>
    <td><input type=text id=name name=name value=""  size=20  maxlength=20 class=input></td>
</tr>
<tr>
    <td align=right><font class=list_eng>E-mail</font></td>
    <td><input type=text id=email name=email value=""  size=40  maxlength=200 class=input></td>
</tr>
<tr>
    <td align=right><font class=list_eng>Homepage</font></td>
    <td><input type=text id=homepage name=homepage value=""  size=40  maxlength=200 class=input></td>
</tr>
 
<tr>
    <td width=80 align=right><font class=list_eng>Option</font></td>
    <td class=list_eng>
        <select name=category><option>Category</option><option value=1>일반</option><option value=2>질문</option><option value=3>답변</option></select>
        <!-- <input type=checkbox id=notice name=notice  value=1>공지사항--> <input type=checkbox id=use_html name=use_html  value='1' onclick='check_use_html(this)'><ZeroBoard>HTML사용 <input type=checkbox id=reply_mail name=reply_mail  value=1>답변메일받기 <input type=checkbox id=is_secret name=is_secret  value=1>비밀글    </td>
</tr>
<tr valign=top>
    <td align=right><font class=list_eng><b>Subject</b></font></td>
    <td><input type=text id=subject name=subject value=""  size=60  maxlength=200 style=width:99% class=input></td>
</tr>
<tr>
    <td align=right onclick=document.getElementById('memo').rows=document.getElementById('memo').rows+4 style=cursor:pointer><font class=list_eng><b>Memo</b></font> <font class=list_eng></font></td>
    <td style=padding-top:8px;padding-bottom:8px;><textarea id=memo name=memo  cols=90  rows=18 class=textarea style=width:99% onkeydown='return doTab(event);'></textarea></td>
</tr>
 
<tr>
    <td width=80 align=right><font class=list_eng>Link #1</font></td>
    <td><input type=text id=sitelink1 name=sitelink1 value=""  size=62  maxlength=200 class=input style=width:99%></td>
</tr>
 
 
<tr>
    <td width=80 align=right><font class=list_eng>Link #2</font></td>
    <td><input type=text id=sitelink2 name=sitelink2 value=""  size=62  maxlength=200 class=input style=width:99%></td>
</tr>
 
<!--
<tr>
    <td width=80 align=right><font class=list_eng>Upload #1</font></td>
    <td class=list_eng><input type=file name=file1  size=50  maxlength=255 class=input style=width:99%> </td>
</tr>
<tr>
    <td align=right><font class=list_eng>Upload #2</font></td>
    <td class=list_eng><input type=file name=file2  size=50  maxlength=255 class=input style=width:99%> </td>
</tr>
-->
</table>
<table border=0 width=90% cellsapcing=1 cellpadding=0>
<tr>
    <td width=200 height=40>
        <a onfocus=blur() href='#' onclick='javascript:return view_preview();'><font class=list_eng>&nbsp;&nbsp;미리보기</a>
        <Zeroboard &nbsp;&nbsp;그림창고</a>
        <a onfocus=blur() href='javascript:showCodeBox()'><font class=list_eng>&nbsp;&nbsp;코드삽입</a>
    </td>
    <td align=right>
        <input type=submit value="작성완료" class=submit accesskey="s">
        <input type=button value="취소하기" class=button onclick=history.back()>
    </td>
</tr>
</form>
</table>
<br>
<div id="myDiv"><h2>AJAX로 이 문장을 화면 깜빡임 없이 바꿔보자!</h2></div>
<table border=0 cellpadding=0 cellspacing=0 height=20 width=90%>
<tr>
    <td align=right style=font-family:tahoma,굴림;font-size:8pt;line-height:150%;letter-spacing:0px>
        <font style=font-size:7pt>Copyright 1999-2015</font> <font style=font-family:tahoma,굴림;font-size:8pt;><a href=http://www.xpressengine.com/zb4_main target=_blank onfocus=blur()>Zeroboard</a> / skin by <a href=http://www.xpressengine.com/ target=_blank onfocus=blur()>zero</a></font>
    </td>   
</tr>
</table>
 
</div>
<!-- 접속통계 관련 헤더 -->
<script src="aanalyzer/screen.js" type="text/javascript"></script>
 
</body>
</html>
 
 
<!--
 Session Excuted  : 0.0001
 Connect Checked  : 0.0003
 Query Excuted  : 0.000
 PHP Excuted  : 0.051
 Skins Excuted  : 0.000
 Total Excuted Time : 0.052
-->
 

[서버 측: board_imsi_ok.php]
1
2
3
4
5
6
7
8
9
<?php
header("Content-Type: application/javascript; charset=utf-8");
 
$reg_date=time();
 
$jsontable=array("id"=>$id,"no"=>$no,"category"=>$category,"notice"=>$notice,"password"=>$password,"name"=>$name,"email"=>$email,"homepage"=>$homepage,"use_html"=>$use_html,"reply_mail"=>$reply_mail,"is_secret"=>$is_secret,"subject"=>$subject,"memo"=>$memo,"sitelink1"=>$sitelink1,"sitelink2"=>$sitelink2,"reg_date"=>$reg_date);
 
print json_encode($jsontable);
?>

덧글

  • 희망의빛™ 2015/07/11 21:32 # 답글

    102행의

    <SCRIPT type="text/javascript" src="syntaxhighlighter/scripts/jQuery.js"></SCRIPT>

    이 줄을 빼니까 자바스크립트 오류가 안뜨네요. 헐~ 그럼 이 행을 어떻게 하죠?
  • 희망의빛™ 2015/07/11 19:50 # 답글

    jQuery.js 에서 첫행 jQuery.noConflict(); 를 제거하니 일단 "$ 는 null 이거나 개체가 아닙니다" 오류는 뜨지 않네요. 와우 중요한 버그를 찾아냈네요. ^^; 하하하
  • 희망의빛™ 2015/07/11 21:30 # 답글

    근데 이렇게 수정하고 나니 myDiv에 아무것도 출력이 되지를 않네요. 이건 또 뭐죠? 이것도 모르겠네요. 상기 소스와 같이 기술하면 폼 내용이 myDiv에 출력이 돼야 하는데 30초 후에 아무것도 출력이 되지를 않습니다. 이거 아시는 분 계신가요?

    테스트 페이지 링크해 드립니다. http://www.blrun.net/bbs/test2.html
  • 누군가의친구 2015/07/11 22:20 # 답글

    이렇게 해달라고 요청이나 해대고 정작 문제 해결책을 제시하면 오히려 제대로 안된다며 욕설이나 해대면 누가 해줄까나?


    가장 큰 근본문제는 희망의빛 자신이 공부의 의지가 없다는 것임.

    등산하는 시간의 절반을 책을 읽는데 투자해야 관련 지식이 자연스래 익혀지는 것인데 희망의빛은 자신은 책 읽는걸 지루하다고 거부하고 구글 검색에만 의존하니 전혀 해결되지 않음. 거기에 책읽기를 귀찮아하니 웹표준을 익히기 거부하고 옛것만 찾느냐 최신 기술을 익히려 하지 않음.

    관악산 등산 대신, 관악도서관(http://www.gwanakcullib.seoul.kr/ecolas-dl/new_kwan/library/index.php)에서 해당 기술관련 서적을 읽기만 해도 해결될 문제임.
  • 희망의빛™ 2015/07/11 22:27 # 답글

    현재 보니까 IE8에서 안되고 크롬이나 파이어팍스에선 myDiv에 출력이 되네요. 하 참 IE8에서도 돼야 하는데 좋은 방법이 없을까요? 참 호환성 맞추기 힘드네요. 여태까지 IE8에서 테스트 하면서 왜 안되나 노심초사 했는데 다른 브라우저에선 되네요. 헐~
  • 희망의빛™ 2015/07/12 14:29 #

    원인을 찾았습니다. 코드 뷰어 화면에서 최상단에 위치한 라이센스 관련 주석을 없앤 다음 <html> 태그 위에 <!DOCTYPE html> 을 붙여 주고 리프레쉬 해줬더니 화면 엘러먼트들이 약간 변형되면서 폼값들이 돌려받아집니다. 이거 찾아내느라고 한줄한줄 코드를 없애가면서 원인을 찾았네요. 일단 IE8 과 호환성을 맞추기 위한 중요한 버그를 잡았으니 이제부턴 작업이 한결 수월해지지 않을까 싶네요. 원인을 찾으니 매우 기분이 좋네요. ^^; 다른 분들도 참고하시면 많은 도움이 되실 겁니다.

    테스트는 여기서 해보시면 됩니다. http://www.blrun.net/bbs/test2.html
  • 희망의빛™ 2015/07/13 08:53 #

    <!DOCTYPE html> 을 소스 코드 맨 위에 달았더니 제 사이트가 완전히 다른 사이트가 돼 버렸네요. 고쳐야 할 것도 많아지고 완전 엉망이 됐습니다. ㅡ_ㅡ; 하나가 해결되니까 또 다른 일거리가 생겼네요. 이런 젠장... 제 사이트에 함 와 보십시요. 완전 장난이 아니게 돼 버렸습니다. T_T

    IE8에선 완전 엉망이네요. 헐~

    <!DOCTYPE html> 의 댓가가 이렇게 큰 줄 몰랐습니다. WYSIWYG 에디터도 엉망이 되고 완전 사이트가...
  • 엘레시엘 2015/07/13 16:35 #

    <!DOCTYPE html>이 뭘 의미하는지 먼저 문서를 봐둡시다.
    http://www.w3schools.com/tags/tag_doctype.asp
    DOCTYPE을 html5용으로 선언했으니 표준 안지키고 구식으로 코딩된 페이지들이 다 작살나는게 정상이죠.
  • Hide_D 2015/07/12 00:28 # 답글

    위에 500줄 짜리는 대체 누구 보라고 올려둔 것인지 전혀 알 수 없으니 넘기도록 하고,
    그나마 생산적인 모습을 보여준 예제 소스코드에 대해서 한마디.

    jQuery의 append는 완결된 태그를 넣을 것. 예를 들면 <table><tbody><tr></tr></tbody></table>
    계속해서 추가할경우, 해당 jQUery 객체에 children이나 find를 사용한 후 계속해서 append를 적으면 됨.
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색