Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过AJAX访问PHP类函数_Php_Jquery - Fatal编程技术网

通过AJAX访问PHP类函数

通过AJAX访问PHP类函数,php,jquery,Php,Jquery,有人知道我如何使用jQuery通过AJAX从PHP类直接访问函数吗 PHP: jQuery: $.ajax({ url: myClass.php, data: Blah.doSomething(); "or" Blah->doSomething() "or whatever" }); 我知道这是一个粗糙的例子,我只是想说明一点,我希望你能理解我问题的要点 目前,我正在按照以下思路做一些事情: $.ajax({ url: myCla

有人知道我如何使用jQuery通过AJAX从PHP类直接访问函数吗

PHP:

jQuery:

$.ajax({
        url: myClass.php,
        data: Blah.doSomething(); "or" Blah->doSomething()  "or whatever"
    });
我知道这是一个粗糙的例子,我只是想说明一点,我希望你能理解我问题的要点

目前,我正在按照以下思路做一些事情:

$.ajax({
        url: myClass.php,
        data: data : { 'type':'doSomething' }
    });
||


我不喜欢它…

现在我想不出比PHP用json输出结果更好的方法了,你可以通过getJSON获得结果,你需要创建一个该类的对象,然后调用你需要的方法。 类声明不执行任何代码

例如,您可以将其添加到类下面:

class Blah { ... }
$b = new Blah();
$b->doSomething();
更新:

如果要调用POST中发送的方法,可以使用函数call\u user\u函数:

$method_name = $_POST['method'];
$b->{$method_name}();

请参阅此处的更多详细信息:

这是不可能的。你现在拥有的可能是最好的方法。

我同意马祖奇的答案。我希望这是一个更完整的一点

PHP:

HTML:


此外,您还可以研究xajax,这是一个很好的小框架,可以简化phpjavascript交互。它还可以从php调用js函数。这是链接:

我不知道你为什么喜欢这样做。 这不是一个好的编程实践。 但是你可以试试这样的

$.ajax({
    url: myClass.php,
    data: {'call':'Blah.doSomething', 'args':5}
});
在服务器端,您可以这样做

$fun = explode('.', $call);
$function = array($fun[0], $fun[1]);
if (is_callable($function)) {
    $response = call_user_func_array($function, $args);
}
echo $response;

你为什么不喜欢当前的解决方案?如果你的例子是真的考虑安全问题。任何人都可以从浏览器中调用任意类函数!请参阅远程过程调用-RPC,例如JSON-RPC-您可以通过添加注释来解释代码如何工作来回答问题,从而改进此答案。。。
class SomeClass{ 
 //definintion 
}
$obj = new SomeClass();
$obj->doStuff();
<input type="button" onclick="<?php $obj->doStuff(); ?>" id="btnAdd" value="Click Me" />
$.ajax({
    url: myClass.php,
    data: {'call':'Blah.doSomething', 'args':5}
});
$fun = explode('.', $call);
$function = array($fun[0], $fun[1]);
if (is_callable($function)) {
    $response = call_user_func_array($function, $args);
}
echo $response;
**Your class**
class Blah {
    function doSomething(data) {
        echo "I am not an animal, I'm a ".data;
    }
}

**Ajax call in other document**
$.ajax({
   url: example.php,
   data: info='beast'
   success: data () { ...
});

**in example.php**
include (class.blah.php);
$obj = new SomeClass();
$obj ->doStuff($_GET['info']);