자바스크립트의 변수를 PHP 에서 읽을 수 있는 방법은
"<script>document.write(p1);</script>"; 를 사용하면 된다.
자바스크립트는 별다른 표시가 없으면 윗줄에서 아래줄로 순차적으로 해석한다.
<script>
var p1 = "success";
</script>
<?php
echo "<script>document.write(p1);</script>";
?>
※ 배열도 1차원으로 나열하더라.
육안(화면)으로 보이는 것과 웹브라우저 소스보기로 보는 거랑은 결과가 다를 수 있음을 확인해야 한다.
PHP 변수 값을 자바스크립트/jQuery 로 전달하는 방법
전제조건 : 자바스크립트는 순차적으로 읽어들이므로 PHP 코드가 자바스크립트보다 위에 나와야 한다.
<script>
var str = '<?php echo $str;?>';
</script>
※ 자바스크립트에서 PHP 로 변수 넘기기 알아야 할 사항
- 위에서부터 순차적으로 실행되는 구조하에서 javascript 변수를 PHP에서 읽어내는 것은 가능하다.
하지만 자바스크립트 함수내에서 PHP 변수로 넘기는 것은 안된다.
- 자바스크립트에서 결과값으로 얻은 변수를 PHP 다른 파일로 넘기는 것은 ajax를 사용하면 된다.
하지만, ajax 결과를 다시 PHP 변수로 넘긴다?? 안된다는 걸 명심하자.
ajax 결과를 가지고 클라이언트 HTML 파일을 업데이트할 수는 있다.
내가 제대로 이해 못할 수도 있으니 https://opentutorials.org/module/532/6508 게시글 참조하면 도움 될 수도....
PHP 배열 변수를 자바스크립트 배열로 전달하는 방법
JSON(JavaScript Object Notation)은 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법이다.자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 가장 적합하다.
왜냐하면 JSON은 문자열 뿐만 아니라 배열(Array), 오브젝트(Object) 등 컴퓨터의 모든 변수 형태를 문자열로 표현할 수 있기 때문이다.
JSON에서 표현할 수 있는 데이터 형식으로는 다음과 같은 것들이 있다.
- String (문자열): 큰 따옴표로 묶어 표현, ex) "link2me"
- Number (숫자): 숫자 표현, ex) 1234
- Array (배열): 대괄호로 묶어 표현, ex) [ 'a', 'b', 'c' ]
- Object (객체): 중괄호로 묶어 표현, ex) { key:'value',key2:'value2' }
- Boolean (참/거짓): TRUE 또는 FALSE, ex) true, false
- Null
json_encode 함수를 사용하면 1차원 배열이든 2차원 배열이든 간단하게 자바스크립트 배열로 만들어 준다.
json 은 UTF-8 로 인코딩되어야 인식된다는 걸 명심하자.
파일 Encoding 이 ANSI 로 되어 있으면 결과값이 출력되지 않는다.
<?php
$_POST = array('1','2','3');
echo json_encode($_POST, JSON_FORCE_OBJECT);
?>
<SCRIPT type="text/javascript">
var aa = <?php echo json_encode($_POST);?>;
alert(aa.subject); // 연관배열에서 key로 값을 찾아준다. 한글도 잘 인식되더라.
</SCRIPT>
<script type='text/javascript'>
<?php
$php_array = array('aaa','bbb','ccc');
$js_array = json_encode($php_array);
echo "var javascript_array = ". $js_array . ";\n";
?>
</script>
다른 방법은 PHP 배열(1차원)을 문자열로 변환한 다음에 new Array()에 넣으면 1차원 배열은 해결된다.
단순한 값들의 나열이라면 배열 타입으로도 충분하다.
<?php
$_POST = array('1','2','3');
?>
<SCRIPT type="text/javascript">
var aa = new Array("<?=implode("\",\"" , $_POST);?>"); // 배열의 값만 문자열로 저장
</SCRIPT>
String to Array
string(문자열)을 구분자로 구분하여 배열로 저장하여 값을 출력
<?php
$flddata ="uid,ItemName,Price,Quantity";
$data = array();
$data = explode(",", $flddata); // 문자열을 배열로 저장
for($i=0; $i < count($data); $i++) {
echo $data[$i].'<br />';
}
?>
Array to String
배열(array)을 구분자로 구분하여 문자열(string)로 저장
<?php
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr); // 배열을 문자열로 저장
?>
Array 출력
checkbox 에서 선택한 값을 배열로 담아서 ajax 로 넘길 경우 코드와 PHP 파일을 값을 받아서 처리하는 과정이다.
배열을 분리하여 값을 추출하고자 할 경우에 foreach 문을 사용하면 된다.
$('.chkbox:checked').each(function() // chkbox 라는 클래스명을 준 경우
$('input:checkbox[name="uid[]"]:checked').each(function() // inputbox name 을 직접 준 경우
$('.btnbox1').click(function(){
var chkdata = new Array();
$("input:checked").each(function() {
chkdata.push($(this).val());
});
if(chkdata.length != 0){
alert(chkdata);
$.post('ajax.php',{data:chkdata}, function(response) {
//alert(response);
});
} else {
alert('선택한 항목이 없습니다.');
}
});
<?php
if(isset($_POST['data'])){
foreach($_POST['data'] as $column => $value) {
echo $value;
// $value 를 가지고 MySQL DB Delete 수행하는 로직 처리
}
}
?>
'Web 프로그램 > js, jQuery' 카테고리의 다른 글
[jQuery] jqplot 를 이용한 막대 그래프 통계 (4) | 2016.12.06 |
---|---|
[jQuery] MP3 Player (0) | 2016.12.04 |
[jQuery] 년도와 월(月)을 선택하면 자동으로 마지막일자 변경 (0) | 2016.11.23 |
[jQuery] option selected 값 읽어오기 및 Ajax 결과 받기 (1) | 2016.11.17 |
[jQuery] option selected 값 읽어오기 (0) | 2016.11.17 |