Javascript 不对称回调

Javascript 不对称回调,javascript,php,callback,Javascript,Php,Callback,好的,我已经让它工作了,但是我有点不清楚我是否做对了 我有密码: function post(){ var info = "hello"; $.post("test.php", {"info":info}, function(data){ if(data !== "success"){ alert("Test failed"); } else{ doSomething();

好的,我已经让它工作了,但是我有点不清楚我是否做对了

我有密码:

function post(){
    var info = "hello";
    $.post("test.php", {"info":info}, function(data){
        if(data !== "success"){
            alert("Test failed");
        }
        else{
            doSomething();
        }
    });
}
php如下所示:

<?php

$info = $_POST['info'];
$data = failed;

if(isset($_POST['info'])){
    $data = "success";
}

echo $data;

?>

目前它可以工作,但是这个ajax调用是异步的吗?是否涉及回拨?我应该换一种方式处理吗

这个ajax调用是异步的吗

对,;是的缩写,默认情况下是异步的

是否涉及回拨

当然,此语句末尾的函数是回调函数

$.post("test.php", {"info":info}, function(data){
//                                ^^^^^^^^^^^^^^
    if(data !== "success"){
        alert("Test failed");
    }
    else{
        doSomething();
    }
});
您可以阅读有关API以及这些函数如何工作的更多信息,它们的默认值是什么,以及它们接受什么类型的参数:

这个ajax调用是异步的吗

对,;是的缩写,默认情况下是异步的

是否涉及回拨

当然,此语句末尾的函数是回调函数

$.post("test.php", {"info":info}, function(data){
//                                ^^^^^^^^^^^^^^
    if(data !== "success"){
        alert("Test failed");
    }
    else{
        doSomething();
    }
});
您可以阅读有关API以及这些函数如何工作的更多信息,它们的默认值是什么,以及它们接受什么类型的参数:


我认为使用
.done()
.fail()
方法会更容易理解

function post() {
    return $.post("test.php", {info:"hello"}).done(function () {
        doSomething();
    }).fail(function () {
        alert("Test failed");
    });
}
然后在PHP代码中,您必须指出请求失败的时间:

if ( ! isset($_POST['info'])) {
    header($_SERVER["SERVER_PROTOCOL"] . ' 400 Bad Request');
    die;
}
// Do what you need to do...
当调用
$.post
(或
$.get
$.ajax
)时,将返回一个延迟值。递延价值是指将来会完成(或失败)的事情


为了确定延迟值何时完成,您可以使用
.done(fn)
.fail(fn)
向延迟值添加回调处理程序。当完成延迟值时,将调用回调函数。

我认为使用
.done()
.fail()
方法会更容易理解

function post() {
    return $.post("test.php", {info:"hello"}).done(function () {
        doSomething();
    }).fail(function () {
        alert("Test failed");
    });
}
然后在PHP代码中,您必须指出请求失败的时间:

if ( ! isset($_POST['info'])) {
    header($_SERVER["SERVER_PROTOCOL"] . ' 400 Bad Request');
    die;
}
// Do what you need to do...
当调用
$.post
(或
$.get
$.ajax
)时,将返回一个延迟值。递延价值是指将来会完成(或失败)的事情


为了确定延迟值何时完成,您可以使用
.done(fn)
.fail(fn)
向延迟值添加回调处理程序。当延迟值完成时,将调用回调函数。

$.post()
的参数中的匿名函数是回调函数。因此doSomething()函数已经作为回调函数。先生,您的代码是正确的,恭喜您,谢谢。唯一需要检查的是是什么触发了函数?
$.post()
的参数中的匿名函数是回调函数。所以doSomething()函数已经作为回调函数了。先生,您的代码是正确的,恭喜,谢谢。唯一需要检查的是什么触发了函数?@NaN我不知道。你告诉我。我发现它干净多了。如果服务器无法处理该请求,则会失败。简单。根据请求返回的数据确定请求是否失败只会使本应简单的事情变得复杂。@NaN我不知道。你告诉我。我发现它干净多了。如果服务器无法处理该请求,则会失败。简单。根据请求返回的数据确定请求是否失败只会使简单的事情变得复杂。好的,我还有一个问题。我认为我的问题是,在前一个函数中,我有多个post请求,因此没有为后续post请求分配数据。浏览器如何在on函数中处理多个post请求?它会打电话然后继续执行下面的代码吗?@TomAlbanese也许可以试着把这变成一个单独的问题,这样人们就可以更全面地理解你的问题了好吧,我还有一个问题。我认为我的问题是,在前一个函数中,我有多个post请求,因此没有为后续post请求分配数据。浏览器如何在on函数中处理多个post请求?它会打电话然后继续执行下面的代码吗?@TomAlbanese可能会尝试将此作为一个单独的问题,以便人们能够更全面地理解您的问题