HTTP GET запрос в JavaScript?

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

Мне нужно сделать это в виджете Dashcode Mac OS X.

734
задан 07.05.2020, 12:57

8 ответов

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

5
ответ дан 07.05.2020, 13:00
  • 1
    You' ре гений. Как я не думал об этом. – Ben Humphreys 02.12.2019, 19:15

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

5
ответ дан 07.05.2020, 13:00
  • 1
    Don' t беспокойство, я сбросил голову на это очень та же проблема несколько раз, прежде чем я понял, что мне могло просто сойти с рук это.:) – ctide 02.12.2019, 19:15

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

var page_content;
$.get( "somepage.php", function(data){
    page_content = data;
});
8
ответ дан 07.05.2020, 13:01
  • 1
    +1. Настолько простой, я не знаю почему я didn' t думают, чтобы сделать это. – Menztrual 02.12.2019, 19:16

Прототип делает его очень простым

new Ajax.Request( '/myurl', {
  method:  'get',
  parameters:  { 'param1': 'value1'},
  onSuccess:  function(response){
    alert(response.responseText);
  },
  onFailure:  function(){
    alert('ERROR');
  }
});
12
ответ дан 07.05.2020, 13:02
  • 1
    это - отличное решение! +1 – Mike Waites 02.12.2019, 19:16
  • 2
    Проблемой является тот Mac OS X doesn' t идут с предварительно установленным Прототипом. Когда виджет должен работать в любом компьютере, включая Прототип (или jQuery) в каждом виджете не лучшее решение. – kiamlaluno 07.05.2020, 13:02

IE будет кэшировать URL для создания загрузки быстрее, но если Вы, скажем, опросите сервер, с промежутками пытаясь получить новую информацию, IE будет кэшировать тот URL и вероятно возвратит тот же набор данных, который Вы всегда имели.

Независимо от того, как Вы заканчиваете тем, что делали Ваш ПОЛУЧАТЬ запрос - ваниль JavaScript, Прототип, jQuery, и т.д. - удостоверяются, что Вы помещаете механизм на месте для борьбы с кэшированием. Для борьбы с этим добавьте уникальный маркер до конца URL, Вы собираетесь быть ударом. Это может быть сделано:

var sURL = '/your/url.html?' + (new Date()).getTime();

Это добавит уникальную метку времени до конца URL и предотвратит любое кэширование.

19
ответ дан 07.05.2020, 13:02

В jQuery:

$.get(
    "somepage.php",
    {paramOne : 1, paramX : 'abc'},
    function(data) {
       alert('page content: ' + data);
    }
);
184
ответ дан 07.05.2020, 13:05
  • 1
    обратите внимание что этот isn' t работающий в IE 10 при попытке получить доступ к URL в различном домене, чем page' s домен – BornToCode 07.05.2020, 13:05
  • 2
    Заметьте также что исходный плакат, позже сказанный: " спасибо за все ответы! Я пошел с jQuery на основе некоторых вещей, которые я считал на их сайте ". – Pistos 07.05.2020, 13:06
  • 3
    Я знаю, что некоторые люди хотят записать чистый JavaScript. Я получаю это. У меня нет проблемы с людьми, делающими это в их проектах. Мой " В jQuery:" должен быть intpreted как " я знаю, что Вы спросили, как сделать это в JavaScript, но позволить мне показать Вам, как Вы сделаете это с jQuery, который Вам можно было бы задеть Ваше любопытство путем наблюдения, какой краткостью синтаксиса и ясностью можно наслаждаться при помощи этой библиотеки, которая предоставила бы Вам многочисленные другие преимущества и инструменты как well". – Pistos 07.05.2020, 13:06
  • 4
    @BornToCode необходимо заняться расследованиями далее и возможно открыть ошибку на системе отслеживания ошибок jQuery в этом случае – ashes999 07.05.2020, 13:06

Ajax

Вы были бы лучшими от пользования библиотекой такой как Прототип или jQuery.

2
ответ дан 07.05.2020, 13:10
  • 1
    It' s хорошо, чтобы попытаться лучше эмулировать сенсорный экран только устройства, но что относительно кнопки "Домой" и кнопки "Назад"? Я узнал, что функциональность кнопки "Назад" может быть получена путем нажатия клавиши Esc, но что относительно кнопки "Домой"? – Bilthon 27.12.2019, 01:02

Вот код, чтобы сделать это непосредственно с JavaScript. Но, как ранее упомянуто, Вы были бы очень более обеспечены с библиотекой JavaScript. Моим фаворитом является jQuery.

В случае ниже, страницу ASPX (это обслуживает как сервис REST бедного человека) называют для возврата объекта JSON JavaScript.

var xmlHttp = null;

function GetCustomerInfo()
{
    var CustomerNumber = document.getElementById( "TextBoxCustomerNumber" ).value;
    var Url = "GetCustomerInfoAsJson.aspx?number=" + CustomerNumber;

    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.onreadystatechange = ProcessRequest;
    xmlHttp.open( "GET", Url, true );
    xmlHttp.send( null );
}

function ProcessRequest() 
{
    if ( xmlHttp.readyState == 4 && xmlHttp.status == 200 ) 
    {
        if ( xmlHttp.responseText == "Not found" ) 
        {
            document.getElementById( "TextBoxCustomerName"    ).value = "Not found";
            document.getElementById( "TextBoxCustomerAddress" ).value = "";
        }
        else
        {
            var info = eval ( "(" + xmlHttp.responseText + ")" );

            // No parsing necessary with JSON!        
            document.getElementById( "TextBoxCustomerName"    ).value = info.jsonData[ 0 ].cmname;
            document.getElementById( "TextBoxCustomerAddress" ).value = info.jsonData[ 0 ].cmaddr1;
        }                    
    }
}
73
ответ дан 07.05.2020, 13:11
  • 1
    Спасибо, это точно, что я искал. Я был уверен, что был некоторый способ сделать это, но я понятия не имел как. – Nikwin 29.01.2020, 02:39
  • 2
    Так как этот ответ является одним из главных результатов для гугления " запрос HTTP javascript" it' s стоящий упоминания, что рабочую оценку на данных ответа как этот считают плохой практикой – Kloar 07.05.2020, 13:12

Теги

Похожие вопросы