HTTP GET запрос в JavaScript? - PullRequest
       88

HTTP GET запрос в JavaScript?

706 голосов
/ 29 октября 2008

Мне нужно сделать запрос HTTP GET в JavaScript. Какой лучший способ сделать это?

Мне нужно сделать это с помощью виджета с кодовой панелью Mac OS X.

Ответы [ 24 ]

0 голосов
/ 15 марта 2019

Вот альтернатива XML-файлам для загрузки ваших файлов как объекта и быстрого доступа к свойствам как объекта.

  • Внимание, чтобы javascript мог его и правильно интерпретировать содержимое, необходимо сохранить ваши файлы в том же формате, что и ваша HTML-страница. Если вы используете UTF 8, сохраните ваши файлы в UTF8 и т. Д.

XML работает как дерево, хорошо? вместо написания

     <property> value <property> 

напишите простой файл, подобный этому:

      Property1: value
      Property2: value
      etc.

Сохраните ваш файл .. Теперь вызовите функцию ....

    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();
}

теперь вы можете эффективно получать ваши значения.

getfilecontent('mesite.com/mefile.txt');

window.onload = function(){

if(objectfile !== null){
alert (objectfile.property1.value);
}
}

Это просто маленький подарок, который можно использовать для группы. Спасибо вам, как :)

Если вы хотите локально протестировать функцию на вашем ПК, перезапустите браузер с помощью следующей команды (поддерживаемой всеми браузерами, кроме safari):

yournavigator.exe '' --allow-file-access-from-files
0 голосов
/ 27 июня 2018

Чтобы обновить лучший ответ Джоанна с обещанием, это мой код:

let httpRequestAsync = (method, url) => {
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open(method, url);
        xhr.onload = function () {
            if (xhr.status == 200) {
                resolve(xhr.responseText);
            }
            else {
                reject(new Error(xhr.responseText));
            }
        };
        xhr.send();
    });
}
0 голосов
/ 07 августа 2010

Если вы хотите использовать код для виджета Dashboard и не хотите включать библиотеку JavaScript в каждый созданный вами виджет, то вы можете использовать объект XMLHttpRequest, который изначально поддерживается Safari.

Как сообщает Эндрю Хеджес, виджет не имеет доступа к сети по умолчанию; вам нужно изменить этот параметр в info.plist, связанном с виджетом.

0 голосов
/ 11 октября 2016

Вы можете сделать это и с чистым JS:

// 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();
}

См .: для более подробной информации: html5rocks учебник

...