好的,我已经让它工作了,但有点不清楚我是否正确完成了它。
我有代码:
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()
是 JQuery $.ajax()
方法的简写,默认情况下它是异步的。
是否涉及回调
当然,此语句末尾的函数是回调函数。
$.post("test.php", {"info":info}, function(data){
// ^^^^^^^^^^^^^^
if(data !== "success"){
alert("Test failed");
}
else{
doSomething();
}
});
您可以阅读有关 API 以及这些函数如何工作、它们的默认值以及它们接受的参数类型的更多信息:
- JQuery 发布方法
- JQuery ajax 方法
我认为
使用.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)
向延迟值添加回调处理程序。延迟值完成后,将调用回调函数。