에이작스를 어떻게 파싱해야
글쓴이: smilehsm / 작성시간: 목, 2012/11/15 - 2:44오전
에이작스를 어떻게 파싱해야 이쁘게 파싱이되나요
제가 php5, apache2 호스팅서버에 웹을 개발하면서, 메일 송신요소를 달았습니다.
체크박스를 누르면 특정 권한에 대상만 "이메일1;이메일2;" 이런형태로 불러오고싶은데
그쪽에 애널리틱스 자바스크립트를 부르는 내용까지있어서 번거롭지만 파싱으로 지정한 태그안에 영역만 불러오고싶습니다ㅎㅎ
정규식을 쓰기엔 에이작스에 제공된 기술을 무시하는것 같고 xml은 맞지않는것 같고...
json형태로 불러올 수 있다고 듣긴했는데, 요건 서버단에서 json형식으로 출력을 하고 받는형태도 마찬가지로 해줘야겠지요..
문서하나 던져주시면 감사히 보겠습니다ㅎㅎㅎ
Forums:


저는 xml 사용했습니다.
답변하고는 다르지만.
일단. 자바 스크립트로 받는거니까.
,로 구분하면 배열로 받을 수 있을 거 같습니다.
하튼.
php로 xml을 만들어서 보내주고.
네이버에서 제공하는 xml 파싱 소스로 분리합니다.
객체로 사용해서 쉽드라구요.
http://blog.naver.com/choiye84?Redirect=Log&logNo=130104097813
진도'라고 하네요.
//ERROR //Warning: Unexpected character in input: '\' (ASCII=92) state=1 in D:\APM_Setup\htdocs\mysql.php on line 76 // " 따옴표 빼먹음 /* <?xml version="1.0" encoding="euc-kr"?> <booklist> <memo>memo1</memo> //x[0].childNodes[0].nodeValue <book> <title>title1</title> //x[0].childNodes[0].nodeValue <author>author1</author> </book> <book> <title>title2</title> //x[1].childNodes[0].nodeValue <author>author2</author> </book> </booklist> //record == 행. field == 열(항목) <?xml version="1.0" encoding="euc-kr"?> <div_id> <count>2</count> <record> <comment>내용</comment> <date>날짜</date> </record> <record> <comment>내용</comment> <date>날짜</date> </record> </div_id> //http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040206&docId=122063360&qb=eG1sIG5vZGUgY291bnQ=&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0 //xml 생성시 xml에 count를 넣는다. //MySQL 필드 이름 출력하기 //http://ecclim.blog.me/30135688875 //SELECT column_name //FROM information_schema.columns //WHERE table_name = 'visit' //AND table_schema = 'sayheart' //LIMIT 0 , 30 //결과 //column_name //comment //date //SELECT * //FROM information_schema.columns //WHERE table_name = 'visit' //AND table_schema = 'sayheart' //LIMIT 0 , 30 //결과 //TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT //NULL sayheart visit comment 1 NULL NO varchar 4000 8000 NULL NULL euckr euckr_bin varchar(4000) select,insert,update,references //NULL sayheart visit date 2 NULL NO datetime NULL NULL NULL NULL NULL NULL datetime select,insert,update,references //SELECT * //FROM `visit` //LIMIT 0 , 30 //comment date //asdf 0000-00-00 00:00:00 //afda 0000-00-00 00:00:00 //asfd 2012-11-08 11:19:04 //내가 원하는 결과. //comment asdf date 0000-00-00 00:00:00 //comment afda date 0000-00-00 00:00:00 //XML로 만들면. //<div_id> //<comment>asdf</comment> //<date>0000-00-00 00:00:00</date> // //<comment>afda</comment> //<date>0000-00-00 00:00:00</date> //<div_id> //결과 //<?xml version="1.0" encoding="euc-kr"?> //<div_id> //<count>2</count> //<record> //<comment>asdf</comment> //<date>0000-00-00 00:00:00</date> //</record> //<record> //<comment>afda</comment> //<date>0000-00-00 00:00:00</date> //</record> //</div_id> //코드로 만들면. //field 이름을 얻는 쿼리 실행. //$field_count //$field_name[0] //$field_name[1]... 배열 생성. // //// //echo "<?xml version='1.0' encoding='euc-kr'?>"; //echo "<". $div_id .">"; //echo "<count>". $count ."</count>"; // //반복. //{ // echo "<record". $cnt .">"; // 반복 // { // echo "<". $field_name[0] .">". $row[$i] ."</". $field_name[0] .">"; // } // echo "</record". $cnt .">"; //} //echo "</". $div_id .">"; */ function fn_mysql_selectXML( $div_id, $table ) { // //http://kr.php.net/manual/en/function.mysql-query.php //------------------------ //MySQL 필드 이름 출력하기 //http://ecclim.blog.me/30135688875 $query = "SELECT column_name"; $query .= " FROM information_schema.columns"; $query .= " WHERE table_name = '". $table ."'"; // $query .= " AND table_schema = '". $db_name ."'"; $query .= " AND table_schema = 'sayheart'"; $query .= " LIMIT 0 , 30"; //쿼리 실행 $result = mysql_query($query); //결과 확인 if (!$result) { $message = "Error - MySQL Field Query\n"; $message .= 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message); } $field_count = 0; //성공시. 결과값 얻기 // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc() etc. while ($row = mysql_fetch_array($result, MYSQL_NUM) ) { $field_name[$field_count] = $row[0]; $field_count++; } mysql_free_result($result); //---------------------- //레코드를 XML로 만든다. //쿼리 문장 생성 $query = sprintf("SELECT * FROM `%s`", $table); //쿼리 실행 $result = mysql_query($query); //결과 확인 if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message); } // $string = "<?xml version='1.0' encoding='utf8'?>" ."\n"; $string .= "<xml>" ."\n"; $string .= "\n"; $string .= "<div_id>". $div_id ."</div_id>" ."\n"; $string .= "<count>" .$field_count. "</count>" ."\n"; for($i=0; $i<$field_count; $i++) { // $tmp = iconv("utf-8", "euc-kr", $field_name[$i]); // $tmp = iconv("euc-kr", "utf-8", $field_name[$i]); $tmp = $field_name[$i]; $string .= "<field_name" .$i. ">" .$tmp. "</field_name" .$i. ">" ."\n"; } $string .= "\n"; $arg_num = $field_count; $record_cnt = 0; //성공시. 결과값 얻기 // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc() etc. while ($row = mysql_fetch_array($result, MYSQL_NUM) ) { $string .= "<record". $record_cnt .">" ."\n"; $i = 0; while($i != $arg_num) { // $tmp = iconv("utf-8", "euc-kr", $row[$i]); $tmp = $row[$i]; $string .= " <" .$field_name[$i]. ">" .$tmp. "</" .$field_name[$i]. ">" ."\n"; $i++; } $string .= "</record". $record_cnt .">" ."\n"; $string .= "\n"; $record_cnt++; } $string .= "</xml>" ."\n"; echo $string; //쿼리 종료 mysql_free_result($result); }----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
너무깔끔하게 정리해주셨네요ㅎㅎㅎ
감사합니다
분석조금 해보고 이용해먹겠습니다
지금와서 보니깐
저도 xml로 하는게 더 바람직하다고 생각합니다.
json으로 표현하기에는 너무 갑자기 객체로 트는 기분이드네요..
이거 정리 정말 잘해주셨네요 너무 깔끔해요~!
네이버란..
.
I'm on the edge of glory