从JavaScript调用公共PHP函数

时间:2016-04-21 14:06:33

标签: javascript php jquery

我写了一个公共函数来创建一个项目,但我需要在我的JavaScript文件中调用它。我怎么能这样做?

这是我想在data.php中使用的公共函数:

public function create($projectid,$projectnaam,$startdatum,$einddatum,$omschrijving)
{
  try
  {
    $stmt = $this->db->prepare("INSERT INTO projects (projectid, projectnaam, startdatum, einddatum, omschrijving) VALUES (".$projectid.",'".$projectnaam."', '".$startdatum."', '".$einddatum."', '".$omschrijving."')";
    $stmt->bindparam(":projectid",$projectid);
    $stmt->bindparam(":projectnaam",$projectnaam);
    $stmt->bindparam(":startdatum",$startdatum);
    $stmt->bindparam(":einddatum",$einddatum);
    $stmt->bindparam(":einddatum",$omschrijving);
    $stmt->execute();
    return true;
  }
  catch(PDOException $e)
  {
    echo $e->getMessage();  
    return false;
  }

}

这是我在JavaScript中用来调用该函数的行,但是它没有工作:

url:          'data.php?create',

3 个答案:

答案 0 :(得分:2)

直接你不能调用任何php函数,但你可以做什么 - 将任何参数传递给ajax url中的php文件,在php文件的开头获取它的值,并在值matche时调用函数。

离。

在ajax中:

url:          'data.php?data=create'
在开头的php文件中

$data = $_GET['data'];
if($data == "create")
   create(); // call create function

答案 1 :(得分:0)

你能做的是

<script type="text/javascript">
   var foo= "<?php echo $php_var; ?>";
</script>

否则你不能直接在js中调用php函数

答案 2 :(得分:0)

我猜你有一个核心的php文件,你在每个php页面中都包含它,对吧?我通常使用PHP类自动加载器,所以我不必处理包含/需要类。

spl_autoload_register(function ($class_name) {
    /* Here you can do all of your test if file/dir exists or not */
    include $class_name . '.php'; //then, you include it only when really used
});

我会像以下一样构建类:

class Maker {

    public function __construct(){
        if(isset($_GET['create']){
            /* fetch params */
            $this->create(/*....params....*/);
        }
    }

    public function create($projectid,$projectnaam,$startdatum,$einddatum,$omschrijving){
        /* do stuff */
    }
}

并在您的核心文件中添加简单:

// this will listen for GET parameter 'create' and will fire create(...) function
$maker = new Maker(); 

通过这种方式,您可以对任何文件发出ajax请求,并且您的函数将被执行。注意输出和错误

$.ajax({
    url: 'core.php?create'
});
相关问题