日期:2014-05-17  浏览次数:20650 次

关于AJAX和JS
<body onload="sendRequest()">
<ul id="containerul">
</ul>
我sendRequest()是AJAX访问数据库,然后返回数据到ul标签里,数据也是ul和li标签组成的列表;但是我的一个JS函数 initiate()要操作这些ul和li标签来重新布局,但是好像initiate()在数据还没返回之前就加载完了,所以没有布局以后的效果,怎么样才能再数据全部返回以后再对那些ul和li标签再布局,或者根本就不能对AJAX返回的标签再去布局?在线等!!!!

------解决方案--------------------
标准做法就是:注册Ajax回调函数。
------解决方案--------------------
不要设置成异步加载的
------解决方案--------------------
ajax回调啊,success之后再调用你的initiate()函数
------解决方案--------------------
JScript code

$.ajax({
                type: "POST",
                url: "/CPSolution/allResourceAction.html",
                dataType:"html",
                data: {"menuNumber":index},
                success: function(data){
                    initiate();// ajax提交返回成功之后调init方法
                },
                error:function(){
                    alert($("#content" + i)+"加载失败");
                }
            });

------解决方案--------------------
 
 $.post(url,参数, function (result,type) { ...处理你要做的事情...});
------解决方案--------------------
ajax回调
------解决方案--------------------
楼上都说的差不多,就是写一个回调函数,然后在回调函数中完成自己所要实现的代码。
如下:
JScript code

            xmlHttp.onreadystatechange=function(){
                if(xmlHttp.readyState == 4){
                    if(xmlHttp.status == 200){
                        if(trim(xmlHttp.responseText) != ""){
                            document.getElementById("spanClientId").innerHTML = "<font color='red'>" + xmlHttp.responseText + "<font>";
                        }else{
                            document.getElementById("spanClientId").innerHTML = "";
                        }        
                    }else{
                        alert("请求失败,错误码=【" + xmlHttp.status + "】");
                    }
                }
            };

------解决方案--------------------
initiate()把这个方法放到ajax的回调函数里面处理