에이작스를 어떻게 파싱해야

smilehsm의 이미지

에이작스를 어떻게 파싱해야 이쁘게 파싱이되나요

제가 php5, apache2 호스팅서버에 웹을 개발하면서, 메일 송신요소를 달았습니다.

체크박스를 누르면 특정 권한에 대상만 "이메일1;이메일2;" 이런형태로 불러오고싶은데

그쪽에 애널리틱스 자바스크립트를 부르는 내용까지있어서 번거롭지만 파싱으로 지정한 태그안에 영역만 불러오고싶습니다ㅎㅎ

정규식을 쓰기엔 에이작스에 제공된 기술을 무시하는것 같고 xml은 맞지않는것 같고...

json형태로 불러올 수 있다고 듣긴했는데, 요건 서버단에서 json형식으로 출력을 하고 받는형태도 마찬가지로 해줘야겠지요..

문서하나 던져주시면 감사히 보겠습니다ㅎㅎㅎ

shint의 이미지

답변하고는 다르지만.

일단. 자바 스크립트로 받는거니까.
,로 구분하면 배열로 받을 수 있을 거 같습니다.

하튼.
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&section=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

smilehsm의 이미지

감사합니다

분석조금 해보고 이용해먹겠습니다

지금와서 보니깐

저도 xml로 하는게 더 바람직하다고 생각합니다.

json으로 표현하기에는 너무 갑자기 객체로 트는 기분이드네요..

이거 정리 정말 잘해주셨네요 너무 깔끔해요~!

네이버란..

.
I'm on the edge of glory