2016-04-21 108 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' 
});