Wie kann ich ein JSON-Dokument ohne jQuery konsumieren? Anstatt die Methode getJSON()
aufzurufen, würde ich gerne meine eigene entwerfen. Wie mache ich das?Konsumieren von JSON-Daten ohne jQuery (ohne getJSON)
9
A
Antwort
3
Sie müssten Ihre eigene JSON/AJAX-Funktion rollen. Es gibt einige Beispiele here. Ich bin mir nicht sicher, wie gut sie sind.
15
Wenn es sich um dieselbe Domainanforderung handelt, verwenden Sie window.XMLHttpRequest. Wenn es remote ist, dann ein Skript Element injizieren, können Sie sehen, wie jQuery funktioniert es:
// If we're requesting a remote document
// and trying to load JSON or Script with a GET
if (s.dataType === "script" && type === "GET" && remote) {
var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.src = s.url;
if (s.scriptCharset) {
script.charset = s.scriptCharset;
}
// Handle Script loading
if (!jsonp) {
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState ||
this.readyState === "loaded" || this.readyState === "complete")) {
done = true;
success();
complete();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
if (head && script.parentNode) {
head.removeChild(script);
}
}
};
}
// Use insertBefore instead of appendChild to circumvent an IE6 bug.
// This arises when a base node is used (#2709 and #4378).
head.insertBefore(script, head.firstChild);
// We handle everything using the script element injection
return undefined;
}
ein JSON Parser verwenden. Sie können auch eval
verwenden, aber es ist verpönt für einen JSON-Parser.
Hier interne parseJSON Methode von jQuery:
parseJSON: function(data) {
if (typeof data !== "string" || !data) {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim(data);
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
// Try to use the native JSON parser first
return window.JSON && window.JSON.parse ?
window.JSON.parse(data) :
(new Function("return " + data))();
} else {
jQuery.error("Invalid JSON: " + data);
}
},
Verwandte Themen
- 1. getJSON Remote-Anfrage ohne JSONP - Server
- 2. Jquery getJSON innerhalb getJSON synchrone
- 3. Einen HTTP-Stream konsumieren, ohne jeweils ein Byte zu lesen
- 4. mit jQuery getJSON
- 5. Tastaturereignisse anhören, ohne sie in X11 zu konsumieren - Tastatur-Hooking
- 6. Eine Zeile aus einem Streamreader lesen, ohne zu konsumieren?
- 7. JQuery PHP ohne Antwortfunktion
- 8. jQuery UI ohne HTML
- 9. implementieren signalR ohne jquery
- 10. onKeyUp ohne jQuery?
- 11. Jquery Validierung ohne Formularübergabe
- 12. verblassende Menüs ohne JQuery
- 13. voran ohne jQuery?
- 14. OnClick ohne jQuery
- 15. Entspricht $ .load ohne jQuery
- 16. benutzerdefinierte Bildlaufleiste ohne Jquery
- 17. jquery Auto-Refresh ohne
- 18. Seitenfolie ohne Jquery?
- 19. Angular ohne jquery
- 20. JQuery Inner ohne Unterelement
- 21. jQuery datepicker ohne Eingabe
- 22. jQuery ohne Browser
- 23. getJSON Methode in JQuery HOWTO
- 24. Reguläre Ausdrücke von Python: Erfassen von Lookahead-Werten (Erfassen von Text, ohne es zu konsumieren)
- 25. Jquery getJSON Cross-Domain-Probleme
- 26. jquery Auswahl von Elementen ohne sichtbare Kinder
- 27. Rendering ReactJS-Komponente von jQuery ohne ReactDOM.render
- 28. Lesen von Daten aus $ .getJSON-Methode
- 29. Jquery anhängen ohne zu entfernen
- 30. jQuery Gewähltes Plugin ohne Suchfeld
Hallo Vivek. Könnten Sie Ihrer Frage weitere Einzelheiten hinzufügen? In welcher Sprache/in welchem Rahmen arbeiten Sie? –
+1 Scheint offensichtlich, dass OP wissen möchte, wie man eine AJAX-Anfrage für JSON-Daten macht, ohne jQuery zu benutzen. Nicht so schwer herauszufinden. – user113716
@patrick: Nun, es ist verwirrend genug Leute, um eine Kommentardiskussion in nur neun Wörtern zu generieren, also würde ich sagen, es war offensichtlich, dass es eine schlechte Frage war, egal wie fähig jemand ist, es herauszufinden. – annakata