제목 | 책에 ajax 예제 왜 작동이안되는지좀 봐주세요.(수정2) | ||
---|---|---|---|
글쓴이 | 해행행 | 작성시각 | 2016/01/18 14:53:13 |
|
|||
httpRequest.js 파일 function getXMLHttpRequest() { if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e1) { return null; } } } else if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { return null; } } var httpRequest = null; function sendRequest(url, params, callback, method) { httpRequest = getXMLHttpRequest(); var httpMethod = method ? method : 'GET'; if (httpMethod != 'GET' && httpMethod != 'POST') { httpMethod = 'GET'; } var httpParams = (params == null || params == '') ? null : params; var httpUrl = url; if (httpMethod == 'GET' && httpParams != null) { httpUrl = httpUrl + "?" + httpParams; } httpRequest.open(httpMethod, httpUrl, true); httpRequest.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded'); httpRequest.onreadystatechange = callback; httpRequest.send(httpMethod == 'POST' ? httpParams : null); }
test_v.php (views 에 위치) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> <title></title> <script type="text/javascript" src="/raw_doc/jquery-1.11.2.js"></script> <script type="text/javascript" src="/raw_doc/httpRequest.js"></script> <!-- httpRequest.js 파일 불러옴 --> <script type="text/javascript"> function server_request(){ //전송버튼 클릭시 실행되는 함수 // var csrf_token = getCookie('csrf_cookie_name'); //$config['csrf_protection']가 false면 불필요 var name = "name="+encodeURIComponent (document.ajax_test.names.value); // +"&csrf_test_name="+csrf_token; //XMLHttpRequest 객체에 전달할 데이터를 만듬 데이터는 쿼리스프링 박식으로 만듬 sendRequest("ajax_board/ajax_action", name, callback_hello, "POST"); //js파일 안의 함수. XMLHttpRequest 객체를 사용하여 지정한 URL, 첨부할 } //파라미터, 지정한 전송 방식으로 웹서버에 요청 function callback_hello(){ //웹서버로부터 도착한 응답결과 처리하는 콜백함수 if(httpRequest.readyState == 4){ if(httpRequest.status==200){ var contents = document.getElementByid("contents"); contents.innerHTML = httpRequest.responseText; } } } function getCookie(name){ var nameOfCookie = name + "="; var x = 0; while ( x <= document.cookie.length ){ var y = ( x + nameOfCookie.length); if (document.cookie.substring(x, y) == nameOfCookie ){ if((endOfCookie = document.cookie.indexOf(";", y)) ==-1) endOfCookie = document.cookie.length; return unescape(document.cookie.substring(y, endOfCookie)); } x = document.cookie.indexOf("", x) +1; if(x == 0) break; } return ""; } </script> <body> <div id="main"> <form method="post" name="ajax_test"> <label>이름</label> <div> <input type="text" name="names" value="웅파"/> </div> <div> <input type="button" onclick="server_request()" value="전송"> </div> </form> <div id="contents"></div> </div> </body> </head> </html>
ajax_board.php (controllers 에 위치)
load->view('test_v'); } public function ajax_action(){ echo 'meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; $name = $this->input->post("name"); echo $name."님 반갑습니다!"; } }
config/config.php (설정)
$config['csrf_protection'] = FALSE; $config['csrf_token_name'] = 'csrf_test_name'; $config['csrf_cookie_name'] = 'csrf_cookie_name'; $config['csrf_expire'] = 7200; $config['csrf_regenerate'] = TRUE; $config['csrf_exclude_uris'] = array();
에러는 이렇게 뜹니다... 같은페이지에 여러번 이렇게 글을써서 죄송합니다.
부탁드리겠씁니다. |
|||
다음글 | 세션유지 시간이 불규칙합니다. (2) | ||
이전글 | foreach 관련 질문입니다 (5) | ||
닉
/
2016/01/18 15:51:08 /
추천
0
|
해행행
/
2016/01/18 15:55:43 /
추천
0
@닉 어디쪽에 말씀이신지 알수있을까요? 테스트쪽 sendRequest 쪽이에요? |
해행행
/
2016/01/18 15:59:05 /
추천
0
@닉 oh우우 감사합니다 다음에러만났지만 차근차근해보겠습니다 |
해행행
/
2016/01/18 16:32:51 /
추천
0
@닉 잡고나니 정말 어이없는 에러였네요 ㅜㅜ
덕분에 해결했습니다 |
닉
/
2016/01/18 16:41:19 /
추천
0
@해행행 ㅎㅎ 즐프요~ |
닉
/
2016/01/18 16:54:48 /
추천
0
@해행행 알고 계셔야 할 팁!! ajax 폼검증은 서버 자원을 사용합니다. 웹브라우저에서 js로 폼검증 후에 서버 요청을 하셔야 좀더 서버자원을 적게 쓰게 됩니다.
|
kaido
/
2016/01/19 09:05:54 /
추천
0
@닉
사실은 2곳 전부 하는게 맞습니다. js 에서 1차로 검증하고 2차로 폼검증을 서버에서도 해야합니다. js 폼검증은 얼마든지 위변조 해서 통과 시킬수 있습니다.
정작 이렇게 말하는 저도 시간 관계상 2개다 안 합니다 핫핫; |
변종원(웅파)
/
2016/01/19 10:38:59 /
추천
0
중요도에 따라 2군데 모두 처리하는 곳이 있고 한군데서만 처리하는게 있는데 요즘 거의 api쪽이다 보니 서버단에서 항상 체크를 하다보니 앞쪽은 당연히 체크합니다. ㅎㅎㅎ 서버에서 없으면 error 를 리턴하니 프론트단은 당연히 체크를...
웹페이지 개발이 분리된 형태라...(서버는 php api, 프론트는 html5, css, javascript, ajax) |
@해행행
요청하는 주소가 404네요. ajax_board가 2번써져서일거같은데요?