Ich muss eine HTTP GET Anfrage in JavaScript. Wie kann man das am besten machen?
Ich muss dies in einem Dashcode-Widget für Mac OS X tun.
Ich muss eine HTTP GET Anfrage in JavaScript. Wie kann man das am besten machen?
Ich muss dies in einem Dashcode-Widget für Mac OS X tun.
In reinem Javascript und Rückgabe eines Promise:
httpRequest = (url, method = 'GET') => {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = () => {
if (xhr.status === 200) { resolve(xhr.responseText); }
else { reject(new Error(xhr.responseText)); }
};
xhr.send();
});
}
Wenn Sie den Code für ein Dashboard-Widget verwenden möchten und nicht in jedes von Ihnen erstellte Widget eine JavaScript-Bibliothek einbinden wollen, können Sie das Objekt XMLHttpRequest verwenden, das Safari von Haus aus unterstützt.
Wie von Andrew Hedges berichtet, hat ein Widget standardmäßig keinen Zugriff auf ein Netzwerk; Sie müssen diese Einstellung in der mit dem Widget verbundenen info.plist ändern.
Hier ist eine Alternative zu Xml-Dateien, um Ihre Dateien als Objekt zu laden und auf Eigenschaften als Objekt sehr schnell zuzugreifen.
XML funktioniert als Baum, ok? statt zu schreiben
<property> value <property>
schreiben Sie eine einfache Datei wie diese:
Property1: value
Property2: value
etc.
Speichern Sie Ihre Datei ... Rufen Sie nun die Funktion .... auf.
var objectfile = {};
function getfilecontent(url){
var cli = new XMLHttpRequest();
cli.onload = function(){
if((this.status == 200 || this.status == 0) && this.responseText != null) {
var r = this.responseText;
var b=(r.indexOf('\n')?'\n':r.indexOf('\r')?'\r':'');
if(b.length){
if(b=='\n'){var j=r.toString().replace(/\r/gi,'');}else{var j=r.toString().replace(/\n/gi,'');}
r=j.split(b);
r=r.filter(function(val){if( val == '' || val == NaN || val == undefined || val == null ){return false;}return true;});
r = r.map(f => f.trim());
}
if(r.length > 0){
for(var i=0; i<r.length; i++){
var m = r[i].split(':');
if(m.length>1){
var mname = m[0];
var n = m.shift();
var ivalue = m.join(':');
objectfile[mname]=ivalue;
}
}
}
}
}
cli.open("GET", url);
cli.send();
}
Jetzt können Sie Ihre Werte effizient abrufen.
getfilecontent('mesite.com/mefile.txt');
window.onload = function(){
if(objectfile !== null){
alert (objectfile.property1.value);
}
}
Es ist nur ein kleines Geschenk, um einen Beitrag zur Gruppe zu leisten. Vielen Dank für dein Like :)
Wenn Sie die Funktion lokal auf Ihrem PC testen möchten, starten Sie Ihren Browser mit dem folgenden Befehl neu (wird von allen Browsern außer Safari unterstützt):
yournavigator.exe '' --allow-file-access-from-files
<button type="button" onclick="loadXMLDoc()"> GET CONTENT</button>
<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
var url = "<Enter URL>";``
xmlhttp.onload = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == "200") {
document.getElementById("demo").innerHTML = this.responseText;
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
</script>
Sie können dies auch mit reinem JS tun:
// Create the XHR object.
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
}
// Make the actual CORS request.
function makeCorsRequest() {
// This is a sample server that supports CORS.
var url = 'http://html5rocks-cors.s3-website-us-east-1.amazonaws.com/index.html';
var xhr = createCORSRequest('GET', url);
if (!xhr) {
alert('CORS not supported');
return;
}
// Response handlers.
xhr.onload = function() {
var text = xhr.responseText;
alert('Response from CORS request to ' + url + ': ' + text);
};
xhr.onerror = function() {
alert('Woops, there was an error making the request.');
};
xhr.send();
}
Siehe: für weitere Einzelheiten: html5rocks tutorial
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
16 Stimmen
Beachten Sie, dass dies der Politik der gleichen Herkunft unterliegt. de.wikipedia.org/wiki/Gleicher_Ursprung_Politik
7 Stimmen
Die Antworten auf diese Frage sind wie eine Geschichtsstunde