2014-10-15 3 views
0

Я хотел бы знать, можно ли создать php-объект и использовать его и его методы в моем JavaScript. Например, у меня есть следующий PHP-скрипт:Передача php-объектов в javascript

<?php 
     class Foo 
     { 
      public function bar() 
      { 
       //do something here 
      } 
     } 
?> 

Тогда я мог бы послать AJAX-запрос на сервер и захватить экземпляр Foo:

$.ajax({ 
    type: "POST", 
    url: "path/to/Foo/Foo.php", 
    data: { 
     action: "get-object" 
    }, 
    dataType: 'json', 
    success : function(data){ 
     alert("My Foo object: "+data); 
    }, 
    error : function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Did not work"); 
    } 
}); 

Конечно, я должен был бы добавьте Foo.php немного, чтобы он возвращал мне экземпляр класса Foo.

Я пробовал это, и он не работал, моя переменная данных всегда пуста.

Так есть ли другой подход, чтобы получить экземпляр класса php и методы вызова на нем в Javascript?

+1

php.net> json_encode> прочитал его ** тщательно **. –

+0

У вас есть класс JS под названием Foo? Структуры данных могут передаваться между языками программирования, но вы не можете передавать методы таким же образом. –

ответ

0

Вы можете запускать только PHP-код на сервере, поэтому каждый раз, когда вы хотите вызвать метод на нем из JavaScript, вам нужно будет создать новый HTTP-запрос на сервер.

Это потребует сохранения объекта на нескольких запросах. Вы можете сделать это, сохранив его в переменной сеанса (возможно, вам придется сначала его сериализовать).


Альтернативный метод должен был бы:

  • переописать класс с помощью JavaScript
  • извлечь данные из PHP-объекта
  • отправить эти данные клиенту
  • построить JavaScript объект из данных
  • вызов методов на этом объекте JavaScript

Очевидно, что это будет работать, только если методы делают то, что вы можете достичь с помощью JS на стороне клиента (или вам придется привлекать больше Ajax).

+0

Прохладный, спасибо за вашу помощь :) – enne87

Смежные вопросы