var bbb;
var ma_category;
ma_category="Vocabulary";
$(document).ready(function() {
$("#create_matching_activity").click(function(){
$.ajax({
type: "POST",
url: "a_category_code.php?ma_category="+ma_category,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){
bbb=data.Act_Category_Code;
},
complete: function(){
}
});
alert(bbb);
});
});
<?php
include('ActivityConf.php');
$ma_cat=$_GET['ma_category'];
$sql = $connect->prepare("SELECT Act_Category_Code FROM activity_category WHERE Act_Category='".$ma_category."'");
$sql->setFetchMode(PDO::FETCH_ASSOC);
$sql->execute();
$row = $sql->fetch();
$connect=null;
header('Content-type: application/json');
echo json_encode($row);
?>
此代码从数据库读取。我使用ajax将变量从javascript传递到php。一切都很好,但是当我单击以获取答案时,我会收到“未定义”作为第一次单击的警报,然后第二次单击我会在警报中获得正确的变量。
延迟的原因是什么?如果有人可以帮助解决这个问题,请。 谢谢。
最佳答案
您的警报是同步调用的,而 bbb
在回调内部异步填充 - success
。
换句话说,在第一次单击被触发后,bbb
尚未填充数据(这就是它未定义的原因)。第二次单击时,success
函数很有可能被执行并用数据填充 bbb
。
问题的解决方法是将 alert
从 $.ajax 外部移动到 $.ajax.success 内部:
success: function(data){
bbb=data.Act_Category_Code;
alert(bbb);
},
关于javascript - 使用javascript从ajax读取变量的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39069556/