php에서 javascript로 배열을 전달합니다. Javascript - php에서 js로 배열 전달




두 가지 질문이 있습니다. 1) 데이터베이스에서 필요한 것을 얻는 방법. 2) 데이터베이스에서 얻은 것을 javascript로 전송하는 방법, html 파일이 있습니다. 여기에는 javascript map.js 및 map.php 파일이 포함됩니다. 자바 스크립트는 정상적으로 실행되지만 php 파일은 정상적으로 실행되지 않습니다. HTML 파일에서 javascript와 php를 함께 연결하는 방법을 모르겠습니다. 나는 php와 javascript를 공부하지 않았고 약간 다른 전문 분야가 있지만 이제는 필요한 경우 무언가를 작성해야합니다.

다음은 map.php 코드입니다.

여기 기본에서 배열 요소의 형식 예인 요소 좌표 1과 좌표 2의 배열을 가져와야 합니다.

그런 다음 이 배열을 자바스크립트로 전달해야 합니다. 여기서는 이미 초기화되어 있지만 데이터베이스에서 채워야 합니다. 배열을 마커라고 합니다. map.js

varmap; var 포인트 = 1; //엔진에 대한 포인트 var markers = ( point1:, point2:, point3:, point4:, point5:, point6:, point7:, point8:, point9:, point10:, ); $(document).ready(function()( //지도 var latlng = new google.maps.LatLng(55.755786, 37.617633); var myOptions = ( 확대/축소: 13, 중심: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP ); var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); //지도의 모든 지점 표시 var marker = ;for(i in markers)( marker[i] = new google . maps.Marker(( position: new google.maps.LatLng(markers[i], markers[i]), 지도: 지도 )); ) //map.panTo(new google.maps.LatLng(markers.point10, markers .point10)); //포인트 맵 엔진 function mover()( map.panTo(new google.maps.LatLng(markers["point"+point], markers["point"+point])); point ++ ; if(point>10)point=1; ) //지도는 사용되지 않음 google.maps.event.addListener(map, "idle", function()( setTimeout(mover, 500);//밀리초 단위의 시간 )) ; ));

추신 포인트가 부족하여 찬성하거나 답변할 방법이 없기 때문에 여기에 작성하겠습니다. 사용자에게 감사 가명,데카메론도와주기 위해. 구현하고 싶은 것을 얻었습니다. 모든 것이 작동합니다. 나는 데카메론의 아이디어를 사용했다. 나는 1차 또는 2차로 php로 작업한다. 오랫동안 나는 요점이 무엇인지, 왜 작동하지 않는지 사지 않았습니다. 알고 보니 html 파일이 있었고 그 안에그리고 또한

인라인 데이터를 수행하는 경우 항상 수행하는 것을 좋아했습니다.

기본 항목의 경우 AJAX 콜백을 유지합니다. 또한 데이터를 DOM 노드에 고정하려는 경우 "메타오브젝트" 방식이 제가 정말 좋아하는 방식입니다.

이것은 지금 보기에는 좋지 않을 수 있지만 해당 노드에 대한 정확한 고유 경로를 알 필요 없이 데이터를 DOM 노드에 직접 바인딩하는 효율적인 방법입니다. 특정 화면 요소에 연결해야 하는 데이터 세트가 많은 경우 매우 편리합니다.

나는 보통 jQuery 플러그인 http://noteslog.com/metaobjects/를 사용하지만 너무 쉬워서 가끔 직접 작성하기도 합니다(플러그인을 찾을 수 없었지만 작동 방식이 새롭습니다)

완료되면

$("div#foobar>div"). 얻다(). 데이터($yourarrayhere)

코드에 표시됩니다.

귀하의 질문에 답변하기 위해(그리고 제 답변은 주석 답변에 공백이 생겼습니다) 다음은 제가 사용하는 코드의 매우 단순화된 하위 집합입니다.

jQuery의 Javascript AJAX 핸들러:

$ . ajax(( 유형: "POST" , url: "BACKEND.php" , 시간 초과: 8000 , 데이터: "var1=" + myVar , 데이터 유형: "json" , 오류: function()( $("#DIVID" ). HTML( "
오류!
"
); ), 성공: function (jsonObj )( $ ("#DIVID" ).html (jsonObj . mydata ); ) )); PHP 배열: $data [ "mydata" ] = $myData ;

이 방법이 가장 안전하지는 않지만 항상 자바스크립트 배열을 문자열로 변환한 다음 GET을 위해 URL을 통해 php로 전달할 수 있습니다.

for (var i = 0; i< jsarray . length ; i ++) { var x = jsarray [ i ]; urlstring += "myvalue="+ 엑스 +"&" ; } document . location . href = "mypage.php?" + urlstring ;

그러면 php는 다음과 같습니다.

$phparray = $_GET["내 값"];

도움이 되었기를 바랍니다

AJAX 및 jQuery. PHP에서 JavaScript로 매개변수 전달. JSON 사용
(2012년 10월 12일부터 변경)

AJAX 애플리케이션을 프로그래밍하는 사람들은 종종 PHP 또는 다른 프로그래밍 언어에서 JavaScript로 매개변수를 전달하는 문제에 직면합니다. 일반적으로 이것은 서버 스크립트만 액세스할 수 있는 데이터베이스에서 데이터를 전송합니다. 페이지를 다시 로드하지 않고 어떻게 클라이언트 컴퓨터에 표시할 수 있습니까? 이것이 이 기사의 내용입니다.

JSON(JavaScript Object Notation)에 대해 몇 마디 해봅시다. 이것은 텍스트 기반 데이터 교환 프로토콜로 보다 친숙한 XML과 다소 유사하지만 데이터가 보다 간결하게 기록됩니다. 원래 JavaScript의 요구 사항(따라서 이름)을 위해 개발되었지만 지금은 더 널리 사용됩니다.

예를 들어 PHP에서 JSON으로 배열을 작성하려는 경우 이런 일이 발생합니다.

소스 어레이:

$n = array("최소" => 15, "초" => 44);

JSON 형식의 동일한 배열:

("분":"15","초":"44")

JSON 형식에 대한 자세한 표기와 다양한 프로그래밍 언어에 대한 응용 프로그램은 웹 사이트에 나와 있습니다. http://www.json.org/

두 개의 파일로 구성되는 간단한 예제를 고려하십시오.

첫 번째 파일은 현재 분과 초를 포함하는 JSON 레코드를 생성하는 PHP 스크립트입니다.

두 번째 파일은 1초 간격으로 PHP 스크립트를 호출하고 JSON 레코드를 가져와 그 내용을 웹 페이지 컨테이너에 출력하는 jQuery 라이브러리를 사용하는 JavaScript가 포함된 HTML 페이지입니다.

파일 #1. json.php

date("i"), "초" => date("s")); 에코 json_encode($n); ?>

함수에서 파일의 첫 번째 줄에 머리글() JSON 레코드의 출력 형식을 설정하고 문서가 UTF-8 인코딩의 JavaScript임을 나타냅니다.

두 번째 줄에서는 필드와 연관 배열을 형성합니다. 그리고 비서, 우리는 분과 초의 현재 값을 씁니다.

세 번째 줄에서는 생성된 배열에서 JSON 레코드를 형성합니다.

주목! json_encode() 함수는 PHP 버전 5.2 이상에서만 작동합니다.

파일 #2. example.html

HTML 페이지에 컨테이너가 생성됩니다. 정보. 기능 json_example() 1초에 한 번씩 실행되는 jQuery 함수를 사용합니다. $.getJSON(), json.php 파일을 호출하여 서버에서 JSON 레코드를 검색합니다. 다음으로 결과 JSON 레코드는 함수에 의해 키-값 쌍으로 분할됩니다. $.각각(), HTML 형식으로 변수로 수집됩니다. 에스그리고 용기에 담아 정보, 즉. 클라이언트 응용 프로그램의 화면에.

샘플 소스 파일 다운로드(33kb):

중요한!
예제가 올바르게 작동하려면 다음을 수행해야 합니다.
1. 모든 파일은 UTF-8 인코딩으로 작성되어야 합니다.
2. PHP 스크립트는 파일과 같은 브라우저에서 실행되는 것이 아니라 웹 서버에서 실행되어야 합니다.

확장자가 php인 파일이 있습니다. 여기에서 데이터베이스에서 정보를 읽었습니다. 그리고 이 데이터(연결된 배열)를 이 php 파일에도 포함된 js에 전달해야 합니다.

"; var_dump($arr); 에코 ""; ) // 데이터베이스에서 데이터 로드 $query = R::getAll("SELECT * from questions"); var_dump1($query); ?>

array(5) ( => array(7) ( ["id"]=> string(1) "1"["question"]=> string(143) "테이블의 ______________은(는) 디자인을 수정하는 데 사용됩니다. 필드 이름 수정 또는 필드 데이터 유형 변경과 같은 테이블."["answer1"]=> string(14) "Datasheet View"["answer2"]=> string(11) "Desisn View" ["answer3"]=> string(10) "테이블 보기"["answer4"]=> string(11) "마법사 보기"["true_answer"]=> string(1) "1") => array(7 ) ( ["id"]=> string(1) "2"["question"]=> string(83) "디자인 보기에서 ________ 키를 사용하여 테이블의 여러 필드를 선택할 수 있습니다."["answer1" ]=> string(3) "Alt"["answer2"]=> string(8) "스페이스바"["answer3"]=> string(5) "Shift"["answer4"]=> string(4) " Ctrl"["true_answer"]=> string(1) "3") ... Uncaught SyntaxError: missing) 인수 목록 뒤

결론:
PHP 쪽에서는 모든 것이 정상입니다. 그러나 이 배열을 js 부분의 js 개체로 구문 분석하려고 하면 이상한 오류가 표시됩니다.

  1. php에서 js로 데이터를 로드하는 방법(내 경우에는 관련 배열과 같음). php와 js가 같은 확장자(php) 파일에 있을 때.
    1. php에서 js로 데이터를 로드하는 방법(내 경우에는 관련 배열과 같음). php와 js가 다른 파일에 있을 때. 예를 들어 로직을 구현한 1개의 php 확장 파일이 있습니다(제 경우에는 DB입니다). 그리고 이 데이터를 js 확장 파일로 가져와야 합니다.

해결책

1) 해야 할 일은 다음과 같습니다.

JSON = JavaScript Object Notation... 이미 javascript에서 사용하기 위해 변수에 할당할 수 있는 형식입니다.

그것을 'const'에 할당하는 동안... 그것은 객체이기 때문에 아마도 좋은 생각이 아닐 것입니다.

2) js(ala ajax)에서 php 파일을 호출하면 php 반환에서 원시 JSON을 반환할 수 있으며, 어떻게 ajax 호출을 했는지에 따라(예를 들어 jquery와 같은 라이브러리를 사용하여) ... 또는 JSON.parse(returnData) 를 수행할 필요가 없을 수 있습니다.명확한 답변을 제공하기 위해 이를 수행하는 방법에 대한 정보가 충분하지 않습니다.

기타 솔루션

JSON에 대해 배워야 합니다.
이것은 JS를 포함한 모든 언어에서 구문 분석할 수 있는 구문입니다.

다음과 같이 배열을 PHP에서 JacaScript 코드로 전송하십시오.

일반적으로 PHP 코드는 html 페이지로 렌더링됩니다. 이 페이지에서 필요에 따라 데이터를 구조화할 수 있습니다. 예(php 코드에서):

// js로 - 변수:

질문은 도달할 수 있는 전역 JS 변수가 됩니다.
다른 js.file 또는 html 파일에 포함된 js에서.

// html의 데이터로: // Then fetch this data using js-code, eg in a different js-file: alert(document.getElementById("id_questions").value()); !}

이것은 또한 외부 js 파일 또는 php 코드의 html 출력에 포함된 js에서 달성할 수 있습니다.