2016-03-21 17 views
-1

Bir php oturumu dizi olduğunu varsayalım: Bir kullanıcı tarafından ziyaret ettiği bir sayfadaki öğeleri görüntülemek için kullanılan ve ben kullanıcı kullanılarak görüntülenmek öğelerin bir veya daha fazla düşmesi mümkün istiyorum edilmektedirjavascript işleviyle bir php dizi öğesini iptal etme?

$_SESSION[MyItems]=Array('A'=>"Apple", 'B'=>"Brownie", 'C'="Coin")) 

Bir istemci tarafında javascript işlevi (yani, öğeyi gizleyen ya da gösterimi değiştiren bir şeyi değiştirir = yok ... Şimdi böyle bir şeyi nasıl yapacağım.) sunucu/sayfa yeniden yüklemesine bir geri dönüş yapmaktan ziyade.

o sayfayı yeniden eğer yeniden ortaya çıkmazsa, böylece javascript yani bakış (öğeyi düştüğünde ben aynı anda $_SESSION[MyItems] diziden öğeyi bırakabilirsiniz nasıl?

Ben görev $_SESSION[MyItems] bütün dönüştürme yer alacağı belki düşünüyorum bir javascript dizisi içine dizisi, öğeyi (ler) bırakarak ve sonra dizinin javascript sürümünü bir şekilde $_SESSION[MyItems] üzerine yazıyor. Bu yapılabilir?

cevap

1

Tüm oturum verileri çerezlerde saklanır ve çerezler her ikisine de erişilebilir İstemci ve sunucu: Bu yüzden kesinlikle bunu çerezleri düzenleyerek yapabilirsiniz, ancak bu uygulamadan kaçınılmalı ve you should not do this, çünkü oturum yalnızca sunucu tarafı içindir.

PHP $_SESSION nesne javascript çalışan istemci tarafında, üzerinde mevcut değildir, o yardımcı olur :)

+0

ben gereksiz yere $ _SESSION dizileri kullanmanın kötü bir alışkanlık haline aldık düşünüyorum. $ _SESSION'u unuttuğumuzu ve sadece $ MyItems hakkında konuştuğumuzu varsayalım? Bunu yansıttığım için, bu dava için $ _SESSION kullanmam gerektiğini düşünmüyorum. –

1

Thats kadar basit değildir, PHP sunucu tarafında çalıştığından umuyoruz.

<html> 
    <head> 
     ... 
     <script type="text/javascript"> 
      //parse PHP to json-string for javascript initialisation 
      var MyItems = <?php echo json_encode ($_SESSION[MyItems], true); ?>; 
     </script> 
    </head> 
    <body></body> 
</html> 

Sonra PHP $_SESSION bir kopyasını olurdu:

şablonunuzun kafasında böyle bir şey koymak gerekir (HTML-içeriğe sahip bir .php dosya olduğunu varsayarak) Nesne javascript içinde MyItems denir. Ancak, JS nesnesinde yapılan değişiklikler PHP nesnesine kaydedilmez. Bunun için JQuery's $.post kullanabilirsiniz:

$.post ("target.php", { "MyItems": JSON.stringify (MyItems) }, function (result) { 

    if (result == "true") 
     //do something 
    else 
     //do something else 

}); 

sizin target.php dosya şöyle bakarken:

<?php 

    $_SESSION['MyItems'] = json_decode ($_POST['MyItems']); 
    echo "true"; 

?> 
+0

Teşekkürler. Önceden yanıt verdiğim gibi, muhtemelen $ _SESSION'u dahil etmem gerekmiyor. Muhtemelen sunucu tarafı veritabanında değer eklemek/düşürmek için $ .post kullanacağım, ama bunun cevabınızda nasıl gerçekleştiğine dair bir bakış açısı görüyorum. Bu geceyi kodlamak için çok yoruldum ama yarın başlayacak. –

+0

İstediğiniz yerde verileri kaydedebilirsiniz, Gönderme aynı kalır. ;) iyi geceler dostum. – wayneOS

İlgili konular