Javascript 为什么我的ajax函数返回false?
Javascript 为什么我的ajax函数返回false?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,saveTask()函数调用requestJSONAJAX,但requestJSONAJAX函数返回false。即使我的tasklog.php查询成功,也会发生这种情况;它甚至更新了我的数据库。我不知道我的错误是从哪里来的。是在我的tasklog.php或JavaScript函数中,还是我使用的return错误 function saveTask(){ if(requestJSONAJAX('add')){ goSuccess(); }else{
saveTask()
函数调用requestJSONAJAX
,但requestJSONAJAX
函数返回false
。即使我的tasklog.php
查询成功,也会发生这种情况;它甚至更新了我的数据库。我不知道我的错误是从哪里来的。是在我的tasklog.php
或JavaScript函数中,还是我使用的return
错误
function saveTask(){
if(requestJSONAJAX('add')){
goSuccess();
}else{
alert('error');
}
}
function requestJSONAJAX(action){
var newObj;
if(action == "add"){
newObj = { action: "add",
date: $("#date").val(),
taskName: $("#taskName").val(),
taskType: $("#taskType").val(),
duration: $("#duration").val(),
startTime: $("#startTime").val(),
endTime: $("#endTime").val()
}
}else if(action == "login"){
newObj = { action: "login",
username: $("#username").val(),
password: $("#password").val()
}
}
$.ajax({
method: "POST",
url:"../_tasklogger/classes/tasklog.php", //the page containing php script
dataType: 'json',
data: newObj,
success: function(data){
status = data;
if(status == "success"){
return true;
}else{
return false;
}
},
error: function (req, status, err) {
console.log('Something went wrong', status, err);
}
});
}
tasklog.php
<?php
require_once 'dbconfig.php';
if(empty($_POST['action'])){
return;
}
if(($_POST['action']) != "getData"){
$date= $_POST['date'];
$taskName= $_POST['taskName'];
$taskType= $_POST['taskType'];
$duration= $_POST['duration'];
$startTime= $_POST['startTime'];
$endTime= $_POST['endTime'];
}
switch($_POST['action']){
case "add":
$sql = "INSERT INTO tasks (taskDate,taskName,taskType,duration,startTime,endTime,userId) VALUES(:tdate, :tname, :ttype, :dur, :stime, :etime, 1)";
$stmt = $db_con->prepare($sql);
$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 json_encode("success");
}else{
echo json_encode("error");
}
break;
case "getData":
break;
case "delete":
/* .... some code .... */
break;
case "update":
/* some code ...
notice there is no "break" here... and execution continues to the next case.... falls-thru */
default:
return;
}
?>
您不会从requestJSONAJAX
返回任何内容。在$.ajax()
调用中,从success
处理程序返回一个布尔值,但这与此无关。这不会使包含$.ajax()
调用(即requestJSONAJAX
)的函数返回任何内容
看起来您正试图根据AJAX调用的成功或失败从requestJSONAJAX
返回一个值。那是不可能的;这就是为什么它被称为“AJAX”(异步JavaScript和XML)requestJSONAJAX
将(本质上)总是在AJAX调用完成之前完成。即使它没有首先完成,它也不会等待AJAX调用,也无法判断调用是否成功
要捕获调用是否成功,您需要在某处设置一个标志(如全局变量)。更好的是,在
success
处理程序中处理您想做的任何事情。不要担心返回值。我明白了。现在我明白了为什么我的ajax函数不返回值。感谢您提供的信息丰富的回复,这对我这个刚刚开始学习ajax的人来说是一个很大的帮助。谢谢