我一直试图使用ajax从php调用saveTaskDB
函数。它将作为成功返回,但数据库不会更新。我试过创建一个'create.php'
,其中只有saveTaskDB
函数代码,当我直接调用这个文件时,它会成功返回,并且会更新我的数据库。我不知道为什么我不能在我的php中调用特定的函数,我也想知道如何将我的php函数存储到单个php文件中并通过AJAX调用它们。感谢任何能够帮助我的人。使用ajax无法调用特定的php函数
我有我的代码是这样
tasklogger.js:
function saveTask(){
$.ajax({
method: "POST",
url:"../_tasklogger/classes/tasklog.php", //the page containing php script
data:{ action: 'add',
date: $("#date").val(),
taskName: $("#taskName").val(),
taskType: $("#taskType").val(),
duration: $("#duration").val(),
startTime: $("#startTime").val(),
endTime: $("#endTime").val()
},
success: function(data){
goSuccess();
}
});
}
tasklog.php
require_once 'dbconfig.php';
if (isset($_POST['action']) && !empty($_POST['action'])){
$date= $_POST['date'];
$taskName= $_POST['taskName'];
$taskType= $_POST['taskType'];
$duration= $_POST['duration'];
$startTime= $_POST['startTime'];
$endTime= $_POST['endTime'];
saveTaskDB($date, $taskName, $taskType, $duration, $startTime, $endTime);
}
function saveTaskDB($date, $taskName, $taskType, $duration, $startTime, $endTime){
try{
$stmt = $db_con->prepare("INSERT INTO tasks (TaskDate,TaskName,TaskType,Duration,StartTime,EndTime) VALUES(:tdate, :tname, :ttype, :dur, :stime, :etime)");
$stmt->bindParam(":tdate", $date);
$stmt->bindParam(":tname", $taskName);
$stmt->bindParam(":ttype", $taskType);
$stmt->bindParam(":dur", $duration);
$stmt->bindParam(":stime", $startTime);
$stmt->bindParam(":etime", $endTime);
if($stmt->execute()){
echo 'alert("success")';
}else{
echo 'alert("wrong")';
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}
create.php
require 'dbconfig.php';
$date= $_POST['date'];
$taskName= $_POST['taskName'];
$taskType= $_POST['taskType'];
$duration= $_POST['duration'];
$startTime= $_POST['startTime'];
$endTime= $_POST['endTime'];
try{
$stmt = $db_con->prepare("INSERT INTO tasks (TaskDate,TaskName,TaskType,Duration,StartTime,EndTime) VALUES(:tdate, :tname, :ttype, :dur, :stime, :etime)");
$stmt->bindParam(":tdate", $date);
$stmt->bindParam(":tname", $taskName);
$stmt->bindParam(":ttype", $taskType);
$stmt->bindParam(":dur", $duration);
$stmt->bindParam(":stime", $startTime);
$stmt->bindParam(":etime", $endTime);
if($stmt->execute()){
return true;
}else{
return false;
}
}
catch(PDOException $e){
echo $e->getMessage();
}
在'taskLogger.js'什么是你把'dateType的期望:“dataString''在POST? –
什么是'dateType:'dataString','? –
我对php和ajax还很陌生。我尝试使用'dataType:json'作为数据类型并传入一个有效的json,但它不会更新我的数据库。当我在线阅读论坛时,我遇到了'dataType:dataString',神奇的是,我的查询直接调用'create.php',但没有tasklog.php –