2016-04-21 87 views
0

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

这是公共函数我想在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', 

回答

2

直接你不能调用任何PHP函数,但你可以做到这一点 - 将任何参数传递给ajax url中的php文件,在php文件开始处获取它的值,并在值为matche时调用函数。

ex。

url:   'data.php?data=create' 

在php文件的开头:

在阿贾克斯

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

但是我的data.php写在OOP中,所以我需要调用这个$ data = $ _GET ['data']; if($ data ==“create”) create(); //调用create函数? – nielsmartens

+0

您直接不能实际调用任何clasa方法。您需要创建该类的对象,然后尝试调用方法。 –

0

你可以做的是

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

否则你无法直接调用PHP函数在JS

0

我想你有一个单一的核心PHP文件,你包括在每个PHP页面,对不对?我通常使用PHP类自动加载器,所以我不必处理include/require类。

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' 
});