我对comments-set.php进行了Ajax调用。在php文件中,我将会话变量设置为随机值。在Ajax.done回调中,我想检索会话变量。
我已经验证会话变量被正确设置为新的随机值,但旧的值仍然由.done中的代码显示。
$(document).on("click", "#submit", function () {
var comment = document.getElementById('comment').value
var no_spam = document.getElementById('no_spam').value
var jqxhr = $.ajax({
type:"POST",
url: "comments-set.php",
dataType: "html",
data:{no_spam:no_spam, comment:comment}
})
.done(function(data) {
$("#display").html(data);
$('input[type="text"],textarea').val('');
var nsq = '<label for="no_spam" style="color:#717171;" id="no_spam_Q"><?php echo $_SESSION['q']; ?></label>';
$("#no_spam_Q").replaceWith(nsq);
});
});
我假设(我的知识非常有限!)这与Ajax是async或JS没有等待php解决有关。我怎么能绕过这个?
我尝试过使用像Ajax.complete这样的事件,而不是在.done中没有成功,我甚至在触发此代码的按钮上使用onMouseUp,认为它在鼠标中被触发,所以我会在鼠标中获取会话变量,仍然没有快乐。