【发布时间】:2016-08-03 21:03:40
【问题描述】:
这是我的问题。 我有外部文件 include.html,我用 $.ajax 加载并附加到正文。 include.html的内容:
<p id="descriptionText">My description</p>
我想在 ajax 完成后获取 p#descriptionText 的值,但结果我看到“未定义”
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AJAX</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script>
$(document).ready(function () {
$.ajax({
url: "include.html",
dataType: "html",
}).done(function (response) {
$('body').html(response);
});
console.log($('#descriptionText').val());
});
</script>
</head>
<body>
</body>
</html>
即使我尝试使用闭包,结果也是一样的。下面的例子。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AJAX</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script>
function func() {
$.ajax({
url: "include.html",
dataType: "html",
}).done(function (response) {
$('body').html(response);
});
return function() {
console.log($('#descriptionText').val());
}
}
func()();
</script>
</head>
<body>
</body>
</html>
如果我在$.ajax 中使用async: false 参数,它可以工作,但我需要完全异步。我的问题是什么?谢谢!
【问题讨论】:
-
您无需等待 $.ajax 完成通话。您可以尝试自定义回调。
标签: javascript jquery ajax