我写了一个公共函数来创建一个项目,但我需要在我的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',
答案 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'
});