Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的ajax函数返回false?_Javascript_Php_Jquery_Ajax - Fatal编程技术网

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的人来说是一个很大的帮助。谢谢