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
'programing' 카테고리의 다른 글
dbms_output이 boolean을 인쇄할 수 없습니까? (0) | 2023.08.30 |
---|---|
mariadb 10.2.26에서 기본 키 +10000으로 열(항상 생성됨)을 생성하려면 어떻게 해야 합니까? (0) | 2023.08.30 |
jQuery Validate - 그룹에 하나 이상의 필드를 채워야 합니다. (0) | 2023.08.30 |
AJAX 호출 중 JS 변수 이름 끝에 있는 대괄호를 제거하려면 어떻게 해야 합니까? (0) | 2023.08.30 |
웹사이트 요청 시 보낸 사용자 에이전트와 다른 Javascript 사용자 에이전트(jax) (0) | 2023.08.30 |