PHP ve JavaScript arasında bir dizi aktarmak için en iyi yolu

5 Cevap php

Yani bir veritabanından retreived kayıtların bir dizi var. Dizi formatında;

$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

Benim javascript kodu üzerinden bu dizi aktarma en iyi yolu nedir? Ben javascript tüm kayıtları döngü edebilmek ister ve 'id' özelliğini kullanarak, bazı bilgiler ile bu kimliği ile div güncellemek istiyorum.

Benim javascript kodu, bir dış. Js dosyasında, ama benim sayfa HTML kodu php kodu çalıştırmak mümkün değilim. Yani böyle bir şey yapabilirsiniz:

In my_file.js:

var rows=New Array();

In HTML code:

<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>

5 Cevap

Bunun için bir JSON nesnesi kullanma eğiliminde:

  • Sunucu tarafında, JSON veri kodlamak: json_encode($data);
  • JavaScript tarafta, ben bir parametre olarak bir JSON nesnesi alır ve onu açmak bir işlev yazabilirsiniz.

Eğer nesneyi paketten, bir <DIV> etiketi, ya da nerede (jQuery bu bir tatlı iş yapar) sayfasında istiyorum hiç içine dizinin içeriğini yazdırabilirsiniz.

Eğer satır içi veri yapıyorsanız, ben hep yapıyor düşkün oldum

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

Temel şeyler için, bir AJAX geri arama yapıyor kaydeder. Bir DOM düğümü veri tutkal istiyorsanız Ayrıca, "metaobject" yol gerçekten seviyorum şeydir.

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

Şimdi bu harika görünüyor, ama bu düğüme kesin benzersiz yolunu bilmek gerek kalmadan bir DOM düğümü doğrudan veri ilişkilendirme onun etkili bir yol olmayabilir. Çok kullanışlı belirli ekran öğeleri ekli gereken pek çok veri setlerini varsa.

Ben genellikle jQuery için http://noteslog.com/metaobjects/ eklenti kullanmak, ancak onun kadar basit ben (orada eklenti bulamadım bir zaman oldu, ama yeni nasıl çalıştı) kendim yazılı vesilesiyle var

Bittiğinde orada olacak

$ ("Div # filanca> div").). Veri (olsun. ($ Yourarrayhere)

Kodunuzu görünür.

Sorunuza takip (ve benim cevap, ben comment cevap üzerine boşluk bitti), burada kullandığım kod çok basitleştirilmiş bir alt kümesidir için:

JQuery javascript AJAX işleyicisi:

$.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;

Gibi bir AJAX örnekte here Eğer bu yolda bu sorunu çözebilir:

. Php dosyası (ajax dönüş fonksiyonu)

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

. Js dosya (javascript fonksiyonu)

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

im hala oldukça yeni de belki bu yöntem, en güvenli olmadığını söylüyor, ama her zaman bir dize içine javascript dizi açmak ve sonra GET php için URL yoluyla iletebilirsiniz.

bu yüzden:

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

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

ve sonra php olacaktır:

$phparray = $_GET['myvalue'];

Bu umut olur