0
我想知道是否有任何好的做法,以Ajax的方式从Javascript类中调用方法。在javascript中调用php类函数(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);
}
});
});
的问题是,isset $ _ POST总是在我的班级中,我很确定这不是正确的做法,我在这里找到了帮助。
感谢您提前
西蒙
你认为应该发生什么,而发生什么呢?此外,尝试将类声明放在最前面。 – gd1 2013-02-17 22:01:45
这个想法是有一个更“优雅”的方式来做到这一点。这种方法完美地工作,但是,我不知道我是否想要像这样使用它。一切都按照我想要的方式返回,但我想要找到“良好实践”的方式:) – Simon 2013-02-17 22:13:51
我看到的唯一'问题'是有人可以从外部调用你的课程的任意方法。如果你的课程只包含“安全”方法,那就没有问题了。而且,我不喜欢对$ _POST变量使用extract()。 – gd1 2013-02-17 22:17:43