1

我正在尝试通过 Ajax 在 PHP 类中发送一个 POST 值,以更改我的 SQL 查询。

PHP 页面

 //Link page with Classes
 require_once('mPortfolio.php');
 $mPortfolio  = new Portfolio();
 $all         = $mPortfolio->getAll();

 //Echo sql results here

 //AJAX to send filter value to PHP with Classes
 $('#filters a').on('click', function(e){
        var filter = $(this).data('filter');
        $.ajax({
            type: 'POST',
            url: 'models/mPortfolio.php',
            data: {filter: filter},
            success: function(data){
                alert(data);
            }
        });

PHP 类 mPortfolio.php

echo $_POST['filter']; //This works !

require_once $_SERVER["DOCUMENT_ROOT"].'/models/db/db.php';

class Portfolio{

    private $_db;

    public function Portfolio()
    {
        $this->_db = new db();
        $this->_db->SQLRequest("SET NAMES utf8");
    }

    public function getAll()
    {
        if(isset($_POST['filter'])) :
            $query = "SELECT * FROM portfolio WHERE category='".$_POST['filter']."' AND online = 1 ORDER BY category,pos ASC";
        else :
            $query = "SELECT * FROM portfolio WHERE online = 1 ORDER BY category,pos ASC";
        endif;
        return $this->_db->SQLRequest($query);
    }

}

mPortfolio.php 页面实际上可以读取 Class 之外的 $_POST['filter'],但公共函数 getAll() 不能。

你能帮我吗?请让它工作。谢谢

4

3 回答 3

0

在某个地方,您必须创建 Portfolio 类的对象,并调用 getAll()。从那里,将 $_POST['filter'] 传递给 getAll like

 $portfolioObj = new Portfolio();
 $portfolioObj->getAll($_POST['filter']);

以下 2 行必须在另一个 PHP 中,其中包括 mPortfolio.php

于 2013-09-30T12:54:29.487 回答
0

添加以下代码:

$portfolio = new Portfolio();
$returnData = $portfolio->getAll();
echo $returnData;

在类声明下方。

这是因为类和函数不能直接调用。您需要为需要创建实例的类调用它们,然后在类中调用该函数。如果不调用类或函数,您将无法执行它们。

于 2013-09-30T12:54:45.297 回答
0

利用

 $('#filters a').on('click', function(e){
            var filter = $(this).data('filter');
            $.ajax({
                type: 'POST',
                url: 'models/mPortfolio.php/getAll/filter/$_POST['filter']',
                data: {filter: filter},
                success: function(data){
                    alert(data);
                }
         });

并在 getAll 函数中获取值

OR 

$filter = $_POST['filter'];
$portfolio = new Portfolio();
$return = $portfolio->getAll($filter);
echo $return;
于 2013-09-30T12:56:16.103 回答