我已经进行了彻底的搜索,但是我无法找到关于我的假设的明确内容。我使用了以下代码:
<?php
session_start();
if (isset($_SESSION['valid_user']) && $_SESSION['from']==1)
{
?>
<script type="text/javascript">
$.ajax({
method:"POST",
dataType: 'json',
url:"user.php",
success: function(newdata) {
if (newdata == "nothing")
{
var temp1 ="no data!";
$("#results_ribbon").text(temp1);
return;
}
var temp1 ="You have: ".concat(newdata);
$("#results_ribbon").text(temp1);
}
});
</script>
这是php文件的一部分。构建DOM的HTML代码遵循上述代码......
所以,我希望div与id =&#34; results_ribbon&#34;由于#results_ribbon不存在,所以没有正确的内容。但是,一切正常。这导致我假设$ .ajax调用等待在DOM加载后执行。我对吗?如果不是为什么会发生上述情况?
答案 0 :(得分:1)
不,这不对。调用后立即启动实际的Ajax请求。 但成功回调会在获得服务器响应后一段时间后触发。 到那时你已经在DOM中加载了#results_ribbon。
答案 1 :(得分:1)
Ajax请求不会立即返回结果,有延迟。此延迟可能或可能足够长,无法创建“results_ribbon”div。
可以肯定的是,只需在$(function(){ (...) });
中包含ajax调用,这是$(document).ready的简写。