Можно ли отправить запрос AJAX при загрузке? - PullRequest
2 голосов
/ 12 августа 2010

Здравствуйте, у меня есть два зависимых блока выбора, второй популяризируется после события onchange.

Первый загружен с выбранным значением (selected = selected), о чем я спрашиваю, можно отправить запрошенное во время загрузки страницы, т.е., так как у меня есть выбранный вариант, просто отправьте запрос .

Javascript

function getXMLHTTP() {
        var xmlhttp=false;  
        try{
            xmlhttp=new XMLHttpRequest();
        }
        catch(e)    {       
            try{            
                xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e){
                try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch(e1){
                    xmlhttp=false;
                }
            }
        }

        return xmlhttp;
    }

    function getSubCat(catId,incat) {   
        var strURL="../Includes/subcatAds.php?SubCat="+catId+"&incat="+incat;
        var req = getXMLHTTP();

        if (req) {

            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    // only if "OK"
                    if (req.status == 200) {                        
                        document.getElementById('subcat').innerHTML=req.responseText;                       
                    } else {
                        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
                }               
            }           
            req.open("GET", strURL, true);
            req.send(null);
        }       
    }

PHP будет предоставлен при необходимости

Ответы [ 3 ]

4 голосов
/ 12 августа 2010

Вам действительно нужно использовать jQuery и заменить все вышеперечисленное на:

function getSubCat(catId, incat)
  { 
    $('#subcat').load("../Includes/subcatAds.php?SubCat="+catId+"&incat="+incat);
  }


// Run on load:
$( function(){ 
               getSubCat(4, 5);
   });

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

Вы будете постоянно использовать селекторы jQuery, и ваш код будет очень легковесным. Если вы свяжете библиотеку jQuery с серверами Google, людям даже не придется ее загружать. У большинства людей он уже есть в кеше.

1 голос
/ 12 августа 2010

Поскольку вы делаете это перед тем, как получить какой-либо ввод от пользователя, вы можете немедленно сделать вызов на сервер, до завершения DOM, до полной загрузки страницы, а затем просто подождать, пока произойдет событие onload, или вам сообщают, что дерево DOM завершено, и вы можете смело изменять значение любого из элементов html.

Таким образом, пользователь не ждет, пока браузер завершит загрузку, прежде чем вы даже запустите свой запрос, что улучшит взаимодействие с пользователем.

1 голос
/ 12 августа 2010

Вы можете использовать событие onload следующим образом:

window.onload = function(){
  var selectbox = document.getElementById('select box id');

  if (selectbox.value !== ''){
    // your code to send ajax requests...
  }
};

Код запускается сразу после загрузки страницы.Затем он проверяет, является ли значение указанного поля выбора не пустым, что означает, что что-то выбрано;в этом случае вы вводите свой код для запроса ajax, который будет выполняться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...