Hier ist mein Problem. Ich habe externe Datei include.html, die ich mit $ .ajax laden und an den Körper anhängen. Inhalt des include.html:JS So erhalten Sie den Wert des eingebetteten Elements nach der Verwendung von AJAX
<p id="descriptionText">My description</p>
Ich mag Wert von p # Description erhalten, nachdem Ajax abgeschlossen, aber als Ergebnis sehe ich "undefined"
<!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>
Ergebnis ist die gleiche, auch wenn i versuche den Verschluss zu benutzen. Beispiel unten.
<!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>
Wenn i async: false
Parameter in $.ajax
verwenden funktioniert es, aber ich brauche genau asynchron. Was ist mein Problem? Vielen Dank!
Sie warten nicht auf $ .ajax, um den Anruf zu beenden. Sie können versuchen, einen benutzerdefinierten Rückruf zu verwenden. –
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –
Oder http://stackoverflow.com/questions/9466241/selecting-dom-elements-after-html-was-inserted-in-a-page-with-ajax –