| 제목 | 자바스크립트로 엔터키 입력시 폼을 자동 전송되게 하고 싶습니다. | ||
|---|---|---|---|
| 글쓴이 | 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
ㅠㅠ 안되네요..
|
디버깅의 시작은 에러메시지입니다.