제목 | 자바스크립트로 엔터키 입력시 폼을 자동 전송되게 하고 싶습니다. | ||
---|---|---|---|
글쓴이 | Tier 2 | 작성시각 | 2015/06/27 16:41:50 |
|
|||
책보고 Ajax 연습용으로 만든 코드입니다. 엔터키를 치면 에러 메세지가 뜨는데 이걸 포스트백이라고 하는 모양이더라고요? 첫번째로 이게 왜 일어나는지가 궁금합니다. 두번째로는 이걸 막는 코드를 찾아봤는데 영 좋지가 않습니다; 작동이 안되네요 어디가 잘못된걸까요? //윗줄 생략(ajax 관련 스크립트-정상작동) <script type="text/javascript"> function onKeydownEnterkey(obj){ if(event.keycode==13){ self.focus(); obj.click(); return false; } } </script> </head> <body> <div id="main"> <form method="post" name="ajax_test"> <label>이름</label> <div> <input type="text" name="names" value="핰핰" onkeydown="onKeydownEnterkey(document.all.submit_btn)"> </div> <div> <input type="button" id="submit_btn" onclick="server_request()" value="전송"> </div> </form> <div id="contents"></div> </div> </body> </html> |
|||
다음글 | 보안 질문 드려요~ (1) | ||
이전글 | 컨트롤러 프로퍼티에 대해서 질문드립니다. (2) | ||
변종원(웅파)
/
2015/06/27 20:17:04 /
추천
0
|
Tier 2
/
2015/06/27 20:32:37 /
추천
0
An Error Was Encountered
에러메세지 내용을 안적었네요 죄송합니다 ㅠThe action you have requested is not allowed. 아 그리고 책은 잘 보고 있습니다 정말 잘 쓰인 책 같아요! 많은 도움이 됩니다 |
변종원(웅파)
/
2015/06/28 14:27:45 /
추천
0
csrf 설정을 해놨는데 csrf값을 전송하지 않아서 그렇습니다.
config.php에서 csrf 설정을 끄고 작업하시던지 쿠키를 보내던지 하셔야 합니다. 책 234페이지 3번, 4번 설명항목 참고하세요. |
Tier 2
/
2015/06/28 20:36:38 /
추천
0
위에 있는 코드가 생략되서 그런데 csrf값을 전송하도록 짰습니다. 다만 엔터키를 눌러도 전송버튼을 클릭한것처럼 진행되도록 스크립트를 만들었는데 클릭하면 정상작동하던것이 엔터를 누르면 댓글에 쓴 에러메세지가 뜹니다
생략된 코드입니다. <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable = no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <title>CodeIgniter</title> <!--[if lt IE9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <script type="text/javascript" src="/main/includes/js/httpRequest.js"></script> <script type="text/javascript"> function server_request() { var csrf_token = getCookie('csrf_cookie_name'); var name = "name="+encodeURIComponent(document.ajax_test.names.value)+"&csrf_test_name="+csrf_token; sendRequest("ajax_action", name, callback_hello, "POST"); } function callback_hello() { if (httpRequest.readyState == 4) { if (httpRequest.status == 200) { var contents = document.getElementById("contents"); contents[removed] = httpRequest.responseText; } } } function getCookie(name) { var nameOfCookie = name + "="; var x = 0; while (x <= [removed].length){ var y = (x+nameOfCookie.length); if ([removed].substring(x, y) == nameOfCookie) { if ( (endOfCookie = [removed].indexOf( ";", y)) == -1 ) endOfCookie = [removed].lenght; return unescape ( [removed].substring( y, endOfCookie ) ); } x= [removed].indexOf( " ", x ) + 1; if (x == 0) break; } return ""; } </script> //이하는 본문 코드 그대로 |
변종원(웅파)
/
2015/06/29 12:32:10 /
추천
0
obj.click 대신 server_request()를 호출하도록 바꿔보세요
|
Tier 2
/
2015/06/30 01:04:42 /
추천
0
ㅠㅠ 안되네요..
|
디버깅의 시작은 에러메시지입니다.