我写了一个公共函数来创建项目,但我需要在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',
直接你不能
调用任何 php 函数,但你可以做什么 - 将任何参数传递给 ajax url 中的 php 文件,在 php 文件开头获取其值,如果值匹配,则调用函数。
前任。
在阿贾克斯中:
url: 'data.php?data=create'
在 PHP 文件中开头:
$data = $_GET['data'];
if($data == "create")
create(); // call create function
你能做的是
<script type="text/javascript">
var foo= "<?php echo $php_var; ?>";
</script>
否则你不能直接在JS中调用PHP函数
我想你有一个核心 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'
});