Мне было интересно, есть ли какие-либо хорошие методы для вызова метода из php-класса с Javascript, путем Ajax.Вызов функции класса php в javascript (ajax)
Это мой текущий «стиль» для его выполнения.
(метод в классе только здесь, например)
PHP сторона:
<?php
if(isset($_POST['action']) && $_POST['action'] != null)
{
extract($_POST);
if($action)
{
$ajaxCommand = new EleveUpdate();
if(method_exists($ajaxCommand, $action))
{
$reponse = call_user_func(array($ajaxCommand, $action),$_POST);
echo $reponse;
exit(0);
}
else
{
throw new Exception("Cette méthode n'existe pas");
}
}
}
else
{
echo 'Cette action n\'est pas autorisée';
return false;
}
class EleveUpdate
{
public function __construct()
{
}
public function testfunct($data)
{
echo $data['eleve'];
}
}
Javascript сторона:
$(document).ready(function() {
$.ajax({
url: 'eleveupdate.php',
type: 'POST',
data: {
action: "testfunct",
eleve: 1
},
beforeSend: function()
{
loading(true);
},
error: function()
{
console.log('error');
},
success: function(data)
{
loading(false);
console.log(data);
}
});
});
Проблема, что Исеть $ _POST всегда в моем классе, я уверен, что это неправильный способ сделать это, я здесь, чтобы найти помощь в этом.
Спасибо заранее
Simon
Как вы думаете, что должно произойти, и что происходит вместо этого? Кроме того, попробуйте переместить декларацию класса сверху. – gd1
Идея состоит в том, чтобы иметь более «элегантный» способ сделать это. Этот метод работает отлично, но я не знаю, хочу ли я использовать его так. Все возвращается, как я хочу, но я хочу найти способ «хорошей практики» :) – Simon
Единственная проблема, которую я вижу, это то, что кто-то может вызвать произвольный метод вашего класса извне. Если ваш класс содержит только «безопасные» методы, с этим нет никаких проблем. Более того, мне не нравится использование extract() для переменных $ _POST. – gd1