Ich möchte einige Jade-Inhalte auf Knopfdruck in ein bestimmtes div laden. Ich habe herausgefunden, wie man das mit jQuery macht, es gibt mehrere Beiträge dazu, und im Wesentlichen möchte ich Folgendes tun
$('#div').load('/somePage');
Ich kann jQuery jedoch nicht in meinem Projekt verwenden. Gibt es eine entsprechende Funktion in Vanilla JavaScript?
“Vanilla JavaScript” hat keine Vorkehrungen für etwas wie Ajax. Browser haben die alte XMLHttpRequest API und neuere unterstützen die fetch() API.
@JonathanLaliberte Ich glaube nicht, dass ReadableStream für einen solchen Fall notwendig ist. Ich würde also sagen, dass alle modernen Browser (außer IE) es unterstützen. Außerdem gibt es ein Polyfill für die Browser, die Fetch nicht unterstützen. github.com/github/fetch
– Ali BARIN
19. Juni 2018 um 7:12 Uhr
Guter Start, aber uns fehlt der Teil, in dem wir eine Teilmenge der zurückgegebenen Seite angeben können. Ich habe einen Anfang dazu in einem separaten Thread gefunden.
– Schnellschaltung
21. Oktober 2019 um 1:10 Uhr
Ich erhalte, dass das Dokument nicht definiert ist
– Normajean
2. April 2021 um 8:28 Uhr
@Normajean könnten Sie bitte eine neue Frage mit einigen Code-Snippets posten, die Sie verwenden?
– Ali BARIN
2. April 2021 um 14:37 Uhr
Während ich versuchte, das gleiche Problem zu lösen, habe ich dies gemacht, das auf Ali BARINs Antwort basiert und großartig zu funktionieren scheint, aber eine etwas explizitere Version ist, fügt hinzu init Informationen und hat eine gewisse Logik zu verwenden document.getElementById anstatt querySelector.
/*
* Replicates the functionality of jQuery's `load` function,
* used to load some HTML from another file into the current one.
*
* Based on this Stack Overflow answer:
* https://stackoverflow.com/a/38132775/3626537
* And `fetch` documentation:
* https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
*
* @param {string} parentElementId - The ID of the DOM element to load into
* @param {string} htmlFilePath - The path of the HTML file to load
*/
const loadHtml = function(parentElementId, filePath) {
const init = {
method : "GET",
headers : { "Content-Type" : "text/html" },
mode : "cors",
cache : "default"
};
const req = new Request(filePath, init);
fetch(req)
.then(function(response) {
return response.text();
})
.then(function(body) {
// Replace `#` char in case the function gets called `querySelector` or jQuery style
if (parentElementId.startsWith("#")) {
parentElementId.replace("#", "");
}
document.getElementById(parentElementId).innerHTML = body;
});
};
Wie greifen Sie auf das Dokument in document.getElementById(parentElementId).innerHTML = body von der Serverseite zu? Ich erhalte Dokument ist nicht definiert..
– Normajean
2. April 2021 um 8:25 Uhr
Sie können es so machen, aber es gibt etwas, worauf Sie dabei achten müssen.
Ich möchte, dass Sie darauf achten, wenn Sie eine URL zu einer Seite hinzufügen, von der sie zurückgegeben wird <html> Zu </html> als String, ich denke, es gibt keine Möglichkeit, sich davon wie eine Methode zu trennen .load() in jQuery.
14467200cookie-checkEntspricht $.fn.load ohne jQueryyes
“Vanilla JavaScript” hat keine Vorkehrungen für etwas wie Ajax. Browser haben die alte XMLHttpRequest API und neuere unterstützen die
fetch()
API.– Spitze
30. Juni 2016 um 20:20 Uhr
Ähnliches findet man in youmightnotneedjquery.com
– Jimmy Ko
30. Juni 2016 um 20:23 Uhr
Siehe auch die
fetch
API.– Campbell
30. Juni 2016 um 20:44 Uhr