我使用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中的警报不起作用
答案 0 :(得分:3)
除非您在函数中使用ajax
或setTimeout
,否则它们应按您放置它们的顺序播放。
$(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();
};