0

Я ищу какой-либо способ отправки асинхронных запросов с помощью XHR:Расширения Chrome - асинхронный XHR?

http://code.google.com/chrome/extensions/xhr.html

На самом деле я пытаюсь отправить запрос сразу после загрузки страницы:

$(document).ready(function() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "https://myserver.com/", true); 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4) { 
      // Get logged user 
      username = $("div.user", xhr.responseText).text() 
        .replace(/.*\(([a-z0-9]*)\).*/, "$1"); 
     } 
    }; 
}); 

Но опыт пользователя на самом деле не очень хорошо, он зависает, пока не получит данные от myserver.com, и сразу после этого он отображает popup window.

Есть ли способ сначала отобразить всплывающее окно, а после этого показать некоторый загружаемый текст/изображение пользователю и ПОСЛЕ того, что начнется запрос?

ответ

1

Если вы используете JQuery уже тогда почему бы не использовать удобный JQuery Ajax обертку:

$(document).ready(function() { 
    getData(); 
}); 

function getData() { 
    $.ajax({ 
     url: "https://myserver.com/", 
     type: "GET", 
     dataType: "text", 
     success: function(data) { 
     username = $("div.user", data.replace(/.*\(([a-z0-9]*)\).*/, "$1"); 
     } 
    }); 
} 

Поместите этот сценарий не внутри <head>, но в конце <body>. Если он все еще замерзает страницу, то попробуйте использовать setTimeout:

$(document).ready(function() { 
    setTimeout(getData, 0); 
}); 
+2

Я не знаю, почему Chrome ведет себя, как это, но SetTimeout (GetData, 0); помог ... :-) –

Смежные вопросы