$(document).ready with jQuery

时间:2012-03-13 10:10:49

标签: jquery

我使用jquery进行编码。我的问题是:

<script type="text/javascript">
$(document).ready(function() {
function1();
function2();
});
</script>

有时没有功能有效,有时功能有效,但它们不按顺序工作!! 功能1:

function getnameCategories1()
{

    var request = new XMLHttpRequest();
    if(i<idCategories.length)
        {
            request.open("GET","http://patisserie-orient.fr/prestashop/prestashop/api/categories/"+idCategories[i]+"?PHP_AUTH_USER="+PHP_AUTH_USER+"&ws_key="+ws_key,true);

            request.onreadystatechange = function()
                {
                    if(request.readyState==4)
                    {
                        //alert("Status2 is  "+request.status);
                        if (request.status == 200 || request.status == 0)
                        {
                            response1  = request.responseXML.documentElement;
                            nameCategories[i] = response1.getElementsByTagName('language')[0].firstChild.data;
                            //alert(nameCategories[i]);
                            $('#im'+i).html(nameCategories[i]);
                            $('#a'+i).show();
                            i++;


                         }
                     }
                }

            request.send();

        }   
    else
        {
            return;
        }

}

函数2:

function getCategories()
{

    var request = new XMLHttpRequest();

    request.open("GET","http://patisserie-orient.fr/prestashop/prestashop/api/categories?PHP_AUTH_USER="+PHP_AUTH_USER+"&ws_key="+ws_key,true);
    request.onreadystatechange = function()
    {
        if(request.readyState==4)
        {
            //alert("Status is:  "+request.status);
            if (request.status == 200 || request.status == 0)
            {
                response  = request.responseXML.documentElement;
                i=0;
                while(response.getElementsByTagName('category')[i]!=undefined)
                    {
                        idCategories[i]=response.getElementsByTagName('category')[i].getAttribute('id') ;
                        //alert(idCategories[i]);
                        i=i+1;
                    }

             }
         }

    }
    request.send();
}

有时甚至只是$(文件).ready中的警报不起作用

3 个答案:

答案 0 :(得分:3)

除非您在函数中使用ajaxsetTimeout,否则它们应按您放置它们的顺序播放。

$(document).ready只会在调用你的函数之前等待DOM准备就绪。

如果您需要更多信息,请提供非工作代码的示例。

答案 1 :(得分:0)

正如Michael Laffargue所说,除非您使用某种AJAX请求,或者在setTimeout中执行某些操作,否则应按正确的顺序调用您的函数。

请记住,jQuery有DOM状态和iframe的错误(请查看参考:http://bugs.jquery.com/ticket/10067)。

最好的办法是将.ready()回调函数绑定到DOM而不是在iframe中进行。

另外,请记住,您可以绑定多个.ready()回调。 例如:

$(document).ready(
  function(){
    console.log("Hello");
  }
)

$(document).ready(
  function(){
    console.log("world");
  }
)

也许你以错误的顺序绑定了你的功能?

此致

答案 2 :(得分:0)

这可能不是您的问题,但可能值得一试。

我知道在使用asp.net updatePanels时,您需要使用function pageLoad() { // }代替$(document).ready( function() { // });

它有它的局限性,因为你只能在页面上包含一个function pageLoad()

所以在你的情况下:

function pageLoad() {
function1();
function2();
};