2011-12-05 4 views
1

PHP 함수에서 자바 스크립트로 값의 배열을 전달하려고합니다. 내가 제대로하고 있는지 확실하지 않습니다.PHP 배열을 자바 스크립트로 전달

PHP :

function toggleLayers(){ 
    for($i=0;$i<$group_layer_row;$i++){ 
     $toggleArray=mb_convert_encoding(mssql_result ($rs_group_layer, $i, 0),"UTF-8","SJIS")."_".mb_convert_encoding(mssql_result ($rs_group_layer, $i, 1),"UTF-8","SJIS"); 
     return $toggleArray; 
    } 
} 

JS : (참조)

var myArray = [JSON.parse("<?php echo json_encode($toggleArray); ?>")]; 
    for(var i=0;i < myArray.length; i++){ 
     if($myArray.getVisibility()==true){ 
      $myArray.getVisibility(false); 
     } 
    else{ 
     $myArray.getVisibility(true); 
    } 
} 

SQL : 나는 다른 유사한 질문이보고되었고, 답은 하나입니다

$con = mssql_connect("myServer", "myUsername", myPassword"); 
$sql = "SELECT * FROM m_group_layer WHERE group_id=\"".$_SESSION["group_id"]."\" ORDER BY display_order"; 
$rs_group_layer = mssql_query ($sql, $con); 
$group_layer_row = mssql_num_rows($rs_group_layer); 

막연하고/또는 그들 중 수천이 있습니다.

은 또한 당신의 도움을

감사합니다 "JS에 PHP의 배열 전달에 백치의 가이드"라는 책을 쓰는 것처럼 설명하는 시도하십시오, 어떤 도움을 감사하겠습니다.

편집 :

죄송합니다, 내 질문은 매우 모호했다. 여기에 내가 할 노력하고있어 무엇 :

1.PHP 기능이 배열로 테이블의 모든 레코드를 가져

는 2.Javascript 절 경우에 추가를 통해 PHP 배열을 받아 루프 (이 경우 그들은지도 레이어입니다) 레이어를 전환합니다.

희망 사항이 명확 해집니다.

+0

작동합니까? 작동하지 않는 것은 무엇입니까? – Dogbert

+0

작동하지 않습니다 .. 계속 [JSON.parse ("null")] 문을 제공하고 Object는 속성 또는 메서드 'getVisibility'를 지원하지 않습니다 – Yus

답변

2

생각보다 간단합니다.

변경이 라인은 :

var myArray = [JSON.parse("<?php echo json_encode($toggleArray); ?>")]; 

는하려면 다음

var myArray = <?php echo htmlspecialchars(json_encode($toggleArray), ENT_NOQUOTES); ?>; 

json_encode는 JSON 문자열을 생성합니다. 문자열을 자바 스크립트 컨텍스트에 반향하는 것은 자바 스크립트 리터럴과 동일합니다. htmlspecialchars은 필요한 HTML을 이스케이프 처리하기위한 것으로 json을 반향하는 경우에는 고유하지 않습니다.

참고 그러나 int 또는 문자열과 같은 스칼라 유형이 아닌 PHP 객체 또는 배열 만 json_encode 할 수 있습니다. 이것은 JSON 자체의 한계입니다. toggleLayers() 함수에서 배열이 아닌 문자열을 반환합니다. 매우 유용 할 것

+0

이 방법을 사용 하시겠습니까? 나는 당신이 그 JS 스크립트에 PHP 태그를 삽입 할 수 있다고 생각하지 않는다 ... –

+0

나는 여전히 null 값을 얻는다 ... – Yus

+0

그런 다음 코드에 대한 문제는 json 레이어가 아니라 PHP 레이어에있다. PHP 배열이 잘못 준비되고 있습니다. 나는 당신의'toggleLayers()'문제에 대한 설명을 추가했다. –

-5

일이 이해하기 :

당신은 sumply 는 "자바 스크립트로 PHP 함수의 값의 배열을 전달"하지 수 있습니다.
오히려 당신은 과 같은 PHP를 사용하여 자바 스크립트 코드를 만들 필요가 있습니다.

따라서, 간단한 3 단계는 PHP와 어떤 문제를 해결하기 -> 클라이언트 전송 :

  1. 원하는 순수 클라이언트 측 코드를 작성합니다. 작동하게 만들다. 어딘가에 저장하십시오.
  2. 클라이언트 측 코드를 생성하는 PHP 코드를 생성하십시오.
  3. 코드 비교. 일치하지 않는 경우 - PHP 코드를 수정하십시오. 완료 될 때까지 반복하십시오.
관련 문제