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

HTTP GET запрос в JavaScript?

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

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

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

Ответы [ 24 ]

7 голосов
/ 30 октября 2008

Я не знаком с виджетами Dashcode Mac OS, но если они позволят вам использовать библиотеки JavaScript и поддерживают XMLHttpRequests , я бы использовал jQuery и сделал бы что-то вроде этого:

var page_content;
$.get( "somepage.php", function(data){
    page_content = data;
});
6 голосов
/ 20 июля 2016

Одно решение, поддерживающее старые браузеры:

function httpRequest() {
    var ajax = null,
        response = null,
        self = this;

    this.method = null;
    this.url = null;
    this.async = true;
    this.data = null;

    this.send = function() {
        ajax.open(this.method, this.url, this.asnyc);
        ajax.send(this.data);
    };

    if(window.XMLHttpRequest) {
        ajax = new XMLHttpRequest();
    }
    else if(window.ActiveXObject) {
        try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP.6.0");
        }
        catch(e) {
            try {
                ajax = new ActiveXObject("Msxml2.XMLHTTP.3.0");
            }
            catch(error) {
                self.fail("not supported");
            }
        }
    }

    if(ajax == null) {
        return false;
    }

    ajax.onreadystatechange = function() {
        if(this.readyState == 4) {
            if(this.status == 200) {
                self.success(this.responseText);
            }
            else {
                self.fail(this.status + " - " + this.statusText);
            }
        }
    };
}

Может быть, это несколько излишне, но вы определенно не рискуете этим кодом.

Использование:

//create request with its porperties
var request = new httpRequest();
request.method = "GET";
request.url = "https://example.com/api?parameter=value";

//create callback for success containing the response
request.success = function(response) {
    console.log(response);
};

//and a fail callback containing the error
request.fail = function(error) {
    console.log(error);
};

//and finally send it away
request.send();
5 голосов
/ 29 октября 2008

В файле Info.plist вашего виджета не забудьте установить для ключа AllowNetworkAccess значение true.

4 голосов
/ 03 июля 2016
function get(path) {
    var form = document.createElement("form");
    form.setAttribute("method", "get");
    form.setAttribute("action", path);
    document.body.appendChild(form);
    form.submit();
}


get('/my/url/')

То же самое можно сделать и для почтового запроса.
Взгляните на эту ссылку Запрос на публикацию JavaScript, например, отправьте форму

4 голосов
/ 06 мая 2015

Для тех, кто использует AngularJs , это $http.get:

$http.get('/someUrl').
  success(function(data, status, headers, config) {
    // this callback will be called asynchronously
    // when the response is available
  }).
  error(function(data, status, headers, config) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });
4 голосов
/ 26 сентября 2014

Получить HTTP-запрос GET можно двумя способами:

  1. Этот подход основан на формате xml. Вы должны передать URL для запроса.

    xmlhttp.open("GET","URL",true);
    xmlhttp.send();
    
  2. Этот основан на jQuery. Вы должны указать URL и имя_функции, которую хотите вызвать.

    $("btn").click(function() {
      $.ajax({url: "demo_test.txt", success: function_name(result) {
        $("#innerdiv").html(result);
      }});
    }); 
    
4 голосов
/ 30 октября 2008

Лучший способ - использовать AJAX (вы можете найти простое руководство на этой странице Tizag ). Причина в том, что любой другой метод, который вы можете использовать, требует больше кода, он не гарантирует работу между браузерами без переделки и требует от вас использования большей клиентской памяти, открывая скрытые страницы внутри фреймов, передавая URL-адреса, анализируя их данные и закрывая их. AJAX - это путь в этой ситуации. Это мои два года тяжелого развития JavaScript.

3 голосов
/ 12 июля 2018

Для этого рекомендуется использовать Fetch API, используя обещания JavaScript. XMLHttpRequest (XHR), объект IFrame или динамические теги более старые (и более грубые).

<script type=“text/javascript”> 
    // Create request object 
    var request = new Request('https://example.com/api/...', 
         { method: 'POST', 
           body: {'name': 'Klaus'}, 
           headers: new Headers({ 'Content-Type': 'application/json' }) 
         });
    // Now use it! 

   fetch(request) 
   .then(resp => { 
         // handle response }) 
   .catch(err => { 
         // handle errors 
    }); </script>

Вот отличная демонстрация и MDN документы

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

Ajax

Лучше всего использовать такую ​​библиотеку, как Прототип или jQuery .

1 голос
/ 18 ноября 2018

Простой асинхронный запрос:

function get(url, callback) {
  var getRequest = new XMLHttpRequest();

  getRequest.open("get", url, true);

  getRequest.addEventListener("readystatechange", function() {
    if (getRequest.readyState === 4 && getRequest.status === 200) {
      callback(getRequest.responseText);
    }
  });

  getRequest.send();
}
...