2016-09-18 4 views
-1

이 질문에 대한 답변을 몇 번이나 들었지만 정확하게 이해할 수 있도록 정확한 컨텍스트가 아니라는 점을 알고 있습니다. 특정 상황을 묻고 싶었습니다.변수를 Ajax에서 Javascript로 넘김

HTML/자바 스크립트 페이지가로드 될 때 서버 측 호출이 트리거되어 데이터베이스의 일부 정보를 쿼리해야합니다. 이 정보는 클라이언트 측에 전달 될 수있는 서버 측에 배열을 형성합니다. 클라이언트에서 배열을 통해 반복 할 수 및 클라이언트 쪽 배열로 푸시 할 수 있어야합니다 (루프 및 푸시 이유는이 컨텍스트에서 배열에 넣을 전에 문자열을 일부 항목 앞에 접두사가 필요할 수 있습니다 때문입니다.)가 사용자에게 표시됩니다.

저는 현재 div가 타겟팅되고 대체되었지만 배열이 아닌 예제 만 보았습니다.

나는 몇 가지 다른 코드 시도를 시도했지만 슬프게도 운이 없었으며 클라이언트와 서버간에 값을 전달하는 방법을 완전히 이해할 수 없었습니다.

나는 다른 언어 (C#, Python)에 정통한 편이므로, 이런 종류의 물건에 관해서는 완전히 새롭지는 않지만 이것은 Javascript/Ajax에 대한 새로운 벤처입니다.

+0

:

여기
<? // I was too lazy to set up a DB for this example. // You should know how to process database data in PHP /* $sql = "SELECT 'id','name','city' FROM 'useres'"; $result = $db->query($sql); while($array = $db->assoc($result)) { $json['id']['name'] = $array['name']; $json['id']['city'] = $array['city']; } */ // This part is only the example data which you should have received from the DB $json[1]['name'] = 'Test Tester'; $json[1]['city'] = 'Test Village'; $json[2]['name'] = 'Claud Atlas'; $json[2]['city'] = 'Haven'; // echo the array as JSON echo json_encode($json); ?> 

위의 코드에서 라이브 예를 클라이언트에서 데이터를 루프 할 때 반복 할 각 요소에 대한 컨테이너/행을 만듭니다. 루프가 끝나면 페이지의 컨테이너에 추가하십시오. – tymeJV

+0

문제가있는 코드를 표시하십시오. – trincot

+1

내가 상상할 수있는 유일한 대답은 자습서에 대한 포인터 일 것이고, 이는 Off Topic입니다.당신이 시도한 것의 [최소, 완전하고 검증 가능한 예] (http://stackoverflow.com/help/mcve)는 가까운 투표 후보자로부터이 질문을 제기하는 유일한 방법입니다 – RiggsFolly

답변

0

일반적으로 가장 쉬운 방법은, 자바 스크립트에서 사용하기에로 json_encode 데이터를 전송하는 경우 자바 스크립트 객체 표기법 (JSON)을 사용합니다 :

다음
<?php 
//somearray.php 
$arr = ["bar", "baz", "kaz"]; 
header('Content-Type: application/json'); 
echo json_encode($arr); 

당신이 당신 AJAX 요청하기 라이브러리 또는 무엇이든을 사용하여의 JSON 및 프로세스를 디코딩 당신이 자바 스크립트에서 바로 거기를 만든 것처럼 :

<html> 
<body> 
<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "http://example.com/somearray.php"; 

xmlhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     var myArr = JSON.parse(this.responseText); 
     prefix(myArr); 
    } 
}; 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function prefix(arr) { 
    var output = []; 
    var i; 
    for(i = 0; i < arr.length; i++) { 
     output.push('foo ' + arr[i]); 
    } 
    console.log(output); //["foo bar", "foo baz", "foo kaz"] 
} 
</script> 
</body> 
</html> 

( http://www.w3schools.com/json/tryit.asp?filename=tryjson_http에서 수정)

이 정보는 서버 측에서 배열을 형성 한 다음 클라이언트에 전달 될 수 있습니다. 클라이언트에서 배열을 통해 반복하여 클라이언트 측 배열로 밀어 넣을 수 있습니다.

HTTP에서 "상태 비 저장"프로토콜 및 AJAX 요청을 읽는 데 도움이 될 수 있습니다. 서버/클라이언트 측에 데이터가 존재하는 곳을 이해하지 못하는 것처럼 들리므로 실제 (힌트, 여전히 상태가 유지되지 않습니다).

0

좋아, 어떻게 할 수 있는지에 대한 작은 예제가 있습니다. 실제로 JSON으로 작업 할 때는 매우 간단합니다. PHP에서 json_encode()을 사용하면 배열을 JSON으로 쉽게 변환하고 AJAX를 통해 배열을 수신하고 각 루프로 데이터를 처리 할 수 ​​있습니다. HTML : 여기

는 testings를 사용할 수있는 코드이다

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>AJAX JSON Example</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
     <script> 
      $(function(){ 
       $.getJSON('ajax.php',function(data){ 
        $.each(data,function(index,value){ 
         $('body').append('Name: ' + value.name + ' | City: ' + value.city + '<br />'); 
        }) 
       }); 
      }); 
     </script> 
    </head> 

    <body> 

    </body> 

</html> 

PHP : https://work.walter-it.de/test/ajax/

관련 문제