Ajax nesneleri kullanarak PHP dosyaları çağırır

7 Cevap php

Benim index.php dosyasındaki bir sınıf örneği var. Ama sonra bazı PHP dosyalarını çağırmak için jQuery Ajax kullanmak, ama onlar ben index.php dosyasında oluşturulan benim nesne kullanamazsınız.

Onu nasıl iş yapabilirim? Ben oluşturulan tek tüm özellik değerlerini tutar çünkü, yeni nesneler yaratmak istemiyorum çünkü ben kullanmak istiyorum.

7 Cevap

Sonraki sayfa yük için nesneyi kaydetmek için oturumu kullanın.

// Create a new object
$object = new stdClass();
$object->value = 'something';
$object->other_value = 'something else';

// Start the session
session_start();

// Save the object in the user's session
$_SESSION['object'] = $object;

Sonra AJAX yükler sonraki sayfada

// Start the session saved from last time
session_start();

// Get the object out
$object = $_SESSION['object'];

// Prints "something"
print $object->value;

PHP oturumları kullanarak belirli bir kullanıcı için pek çok sayfaları arasında veri kaydedebilirsiniz. Örneğin, belki her kullanıcı da satın almak istediğiniz öğelerin listesini içeren bir alışveriş sepeti nesnesi vardır. Eğer Kullanıcıların oturumda bu verileri depolamak beri sadece - Her kullanıcının her sayfaya kaydedilir kendi alışveriş sepeti nesnesi olabilir!

Eğer oturumları kullanmak istemiyorsanız, başka bir seçenek serialize sizin nesneye ve sizin AJAX çağrısına bir $ _POST değeri yoluyla gönderebilirsiniz. Eğer oturumları kullanmak için bunu yapmak için en şık yolu, ama iyi bir alternatif istemiyorum değilse.

Detaylı bilgi için belgelerine Object Serialization bakın.

mm, sen, $_SESSION["someobj"] = $myobj; oturumda depolamak ve Ajax PHP dosyasını çağırdığınızda, bu onun içinde $myobj sınıfını ve herhangi bir nesneyi tanımlar içerdiği sınıf gerekli dosyaları bulunduğundan emin olmalıdır .

Eğer daha spesifik olabilir misin? Ben deneyebilirsiniz.

Bu bir oturum değişkeni atamak sonra bir nesne oluşturmak nasıl:

include(whateverfilethathastheclassorincludeit.php)
$theObject = new TheObjectClass();
//do something with the object or not
$_SESSION['myobject'] = $theObject;

Bu benim Ajax arama PHP dosyası nesnenin üyeleri erişmek nasıl:

include(whateverfilethathastheclassorincludeit.php)
$theObject = $_SESSION['myobject'];
//do something with the object

Eğer index.php sizin nesneyi taşımak istemiyorsanız, ajax index.php için bir istek yapmak ancak index.php bir olarak işlemek için bildirin bazı ekstra parametreler (post / olsun) ekleme var ajax isteği değil, normal web sayfası html çıktı dönmek.

Kodunu sağlanan, ama ne sanırım diğer komut o örnek görmek için oluşturulmuş bir nesne küresel yapmak için ihtiyaç olduğunu değil:

$myobject = new myobject();

Şimdi muhtemelen bazı işlev veya sınıf, ya da tanınan almıyor herhangi bir yerde altında, başka bir yerde bu nesneyi kullanmak istiyorum, bu yüzden global anahtar kelime ile bu küresel yapacak ve o da orada mevcut olacak :

global $myobject;

Eğer nesne var sonra, oturumu içine koymak ve sonra Ajax komut dosyası kullanamaz.

Başkalarına tavsiye ettiler, $_SESSION bunu yapmak için standart yol, aslında, bu icat oturumları çözmek için, nedenlerinden biriydi. Yani nesne seri diğer seçenekler, nesne tutun ve sonra Untampered geri dönmek için istemci tarafında güveniyor. Nesne güvenlik nedeniyle istemci tarafında geçerli olmamalı ve b) bunu aldıktan sonra nesneyi doğrulamak zorunda olacak bilgileri içerebilir) gibi nesne verilere bağlı olarak, bu iyi bir çözüm değildir.

O dedi, ve hala istemci tarafında nesneyi kullanmak istiyorsanız görmek JSON functions in PHP, ardından JSON nesne verilerini seri hale için bir seçenektir.

Burada cevapların çoğu dayanarak $ _SESSION nesneyi saklamak atıfta, tüm nesnenin aksine AJAX erişilmesi gereken sadece bireysel özelliklerini depolamak için daha verimli, ya da önemli değil?

Örneğin

$_SESSION['object'] = $object;

vs

$_SESSION['property1'] = $object->property1;
$_SESSION['property2'] = $object->property2;

Ben OP tüm nesneyi erişen soruyor biliyorum, ama benim soru bu yalnızca bir nesnenin belirli özelliklerini erişen ve AJAX bir zamanlar nesneyi değiştirmek için bir sınıfın yöntemlerini erişmek için gerek olmayan bir meselesi olmadığını ilgilidir sanırım .