programing

PHP와 Javascript 간에 배열을 전송하는 가장 좋은 방법

instargram 2023. 8. 30. 21:12
반응형

PHP와 Javascript 간에 배열을 전송하는 가장 좋은 방법

그래서 저는 데이터베이스에서 검색한 일련의 기록을 가지고 있습니다.배열은 형식입니다.

$rows[0]['id']=1;
$rows[0]['title']='Abc';
$rows[0]['time_left']=200;


$rows[1]['id']=2;
$rows[1]['title']='XYZ';
$rows[1]['time_left']=300;
//And so on upto 10-20 rows

이 배열을 내 자바스크립트 코드로 전송하는 가장 좋은 방법은 무엇입니까?저는 자바스크립트가 모든 레코드를 루프할 수 있기를 바라며, 'id' 속성을 사용하여 그 ID로 div를 몇 가지 정보로 업데이트합니다.

내 자바스크립트 코드는 외부 .js 파일에 있지만, 나는 내 페이지의 HTML 코드에서 php 코드를 실행할 수 있습니다.그래서 저는 다음과 같은 것을 할 수 있었습니다.

my_file.js에서:

var rows=New Array();

HTML 코드에서:

<html>
<head>
<script type="text/javascript" src="js/my_file.js"></script>

<script type="text/javascript">
<? foreach ($rows as $row):?>
<? extract($row);?>
rows[<?=$id;?>]['title']="<?=$title;?>";
//And so on
<? endforeach;?>
</script>

이 경우 JSON 개체를 사용합니다.

  • 서버 측에서 JSON은 데이터를 인코딩합니다.json_encode($data);
  • JavaScript 쪽에서는 JSON 객체를 매개 변수로 사용하여 압축을 푸는 함수를 작성합니다.

객체의 압축을 풀 때 배열의 내용을 다음과 같이 인쇄할 수 있습니다.<DIV>태그 또는 페이지에서 원하는 곳이면 어디든지 사용할 수 있습니다(jQuery는 이 작업을 아주 잘 수행합니다).

만약 당신이 인라인 데이터를 하고 있다면, 나는 항상 그것을 하는 것을.

<script type="text/javascript">
window.sitescriptdata = {}; 
window.sitescriptdata.foo = ( <?php echo json_encode( $structure ); ?> );
</script>

기본적인 작업의 경우 AJAX 콜백을 수행하는 사용자를 저장합니다.또한 DOM 노드에 데이터를 접착하고 싶다면 "메타 객체" 방식이 제가 정말 좋아하는 것입니다.

<div id="foobar">
 <div><object class="metaobject">
        <param name="data" value="<?php echo htmlentities(json_encode($data), ENT_QUOTES );?>" />
 </object></div>
</div> 

보기에는 좋지 않지만, 노드에 대한 정확한 고유 경로를 알 필요 없이 DOM 노드에 데이터를 직접 연결하는 효과적인 방법입니다.특정 화면 요소에 연결해야 하는 데이터 세트가 많은 경우 매우 유용합니다.

저는 보통 jQuery에 http://noteslog.com/metaobjects/ 플러그인을 사용하지만 너무 단순해서 가끔 직접 작성했습니다(플러그인을 찾지 못한 적이 있었지만 작동 방식이 새로웠습니다).

완료되면, 다음과 같은 일이 있을 것입니다.

$("div#foobar > div"). 데이터를 가져옵니다.(여기에 배열)

코드에 표시됩니다.

귀하의 질문(그리고 제 답변, 댓글 답변에 공간이 부족합니다)에 대한 후속 조치로, 여기 제가 사용하는 코드의 매우 단순한 하위 집합이 있습니다.

jQuery의 Javascript AJAX 처리기:

$.ajax({
   type: "POST",
   url: "BACKEND.php",
   timeout: 8000,
   data: "var1=" + myVar,
   dataType: "json",
   error: function(){
     $("#DIVID").html("<div class='error'>Error!</div>");
   },  
   success: function(jsonObj){
     $("#DIVID").html(jsonObj.mydata);
   }
 });


PHP Array:
$data['mydata'] = $myData;

다음과 같은 AJAX 예제에서는 다음과 같은 방법으로 이 문제를 해결할 수 있습니다.

.vmdk 파일(반복 함수 포함)

$myArray = array("object_id"=>1, "object_title"=>"Testobject");
return json_encode($myArray);

.js 파일 (스크립트 함수)

...
if(g_httpRequest.readyState == 4)
{
var jsonRes = JSON.parse(g_httpRequest.responseText);
alert(jsonRes.object_title)
}
...

나는 여전히 꽤 새로운 방법이지만 아마도 이 방법이 가장 안전하지는 않을 것이라고 말하지만, 당신은 항상 당신의 자바스크립트 배열을 문자열로 변환한 다음 그것을 php의 URL을 통해 GET로 전달할 수 있습니다.

그래서:

for(var i=0;i < jsarray.length;i++) 
{
var x = jsarray[i];
urlstring += "myvalue[]="+x+"&";
}

document.location.href = "mypage.php?"+urlstring;

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

$phparray = $_GET['myvalue'];

그것이 도움이 되기를

언급URL : https://stackoverflow.com/questions/393479/best-way-to-transfer-an-array-between-php-and-javascript

반응형