是否可以在加载时发送AJAX请求?

时间:2010-08-12 00:43:20

标签: php javascript ajax select

您好我有两个家属选择框,第二个在onchange事件后很受欢迎。

第一个加载了一个选定的值(选择=选中),我问的是,可以在页面加载时发送请求,即因为我有所选的选项,只需发送请求

的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 个答案:

答案 0 :(得分:4)

您确实需要使用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 :(得分:1)

您可以使用onload这样的事件:

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

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

代码会在页面加载后立即运行。然后检查指定的选择框的值是否为空,表示选择了某些内容;在这种情况下,您将代码放入将执行的ajax请求。

答案 2 :(得分:1)

由于您在从用户获取任何输入之前执行此操作,因此您可以在DOM完成之前,在页面完全加载之前立即调用服务器,然后等待onload事件发生,或者您得知DOM树已完成,然后您可以安全地更改任何html元素的值。

这样,您甚至无需等待浏览器在您开始请求之前完成加载,这将改善用户体验。