js的document.ready是等加载完才执行,但是前面要读库的数据慢,导致document.ready不执行怎么办

小吵 2021-01-29 01:59:13
下面这行代码,是要做autocomplete的,要把sql里读的内容做成自动完成,但是sql里有几千条数据。
我试过,如果只读200条左右,下面这个可以自动完成(Alert是用于测试这段js有没有执行),
但是如果放大到500条或是所有数据,下面这段就完全不执行。
估计是dom没有ready状态,所以未执行。
有什么办法能解决这个问题吗?


<script>

document.write('Hello World!');
$(document).ready(function(){

var supplier="<?php echo ($supplier_tmp);?>".split(",");
//document.write("fsdfadf"+supplier[0]);
$("#customer_id").autocomplete({ source:supplier });
alert ("hello");
alert (document.readyState);

}
);
</script>
...全文
418 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
O==》=====> 2021-01-30
  • 打赏
  • 举报
回复
引用 6 楼 小吵 的回复:
[quote=引用 5 楼 整不明白 的回复:][quote=引用 4 楼 小吵 的回复:][quote=引用 2 楼 整不明白的回复:]ready是DOM加载完了就执行,多半会先于你的数据返回。也就是你的数据还没返回这个函数已经执行完了。
对的对的,就是这样的,因为查询数据库需要时间,数据库还没查完他这里就已经执行完了,所以导致没有执行。 有什么办法可以比较好地处理这个问题吗?[/quote]把显示的方法写到获取数据方法的回调里,确保数据回来之后在执行。 而且还要改一下页面显示,确保数据回来之后页面才可以操作。[/quote] 对js很不熟悉,这个应该怎么弄合适呢,把读sql的那段放在$(document).ready({放在这里面吗?})[/quote]恭喜你解决问题了
小吵 2021-01-29
  • 打赏
  • 举报
回复
引用 1 楼 Stephen_112 的回复:
跳出代码逻辑,代码不执行可能有俩种情况:1.代码在执行之前就报错了,导致中断,无法执行当前的代码 2.代码在执行之前有判断语句,判断语句跳过了期望执行的代码 代码不执行就这么俩种情况,哪来的这那的状态?
F12检查后,确实是数据有问题,有一个字段里多了一个回车符,导致var变量时报错,之前没有看调试,没发现问题,唉
小吵 2021-01-29
  • 打赏
  • 举报
回复
引用 5 楼 整不明白 的回复:
[quote=引用 4 楼 小吵 的回复:][quote=引用 2 楼 整不明白的回复:]ready是DOM加载完了就执行,多半会先于你的数据返回。也就是你的数据还没返回这个函数已经执行完了。
对的对的,就是这样的,因为查询数据库需要时间,数据库还没查完他这里就已经执行完了,所以导致没有执行。 有什么办法可以比较好地处理这个问题吗?[/quote]把显示的方法写到获取数据方法的回调里,确保数据回来之后在执行。 而且还要改一下页面显示,确保数据回来之后页面才可以操作。[/quote] 对js很不熟悉,这个应该怎么弄合适呢,把读sql的那段放在$(document).ready({放在这里面吗?})
O==》=====> 2021-01-29
  • 打赏
  • 举报
回复
引用 4 楼 小吵 的回复:
[quote=引用 2 楼 整不明白的回复:]ready是DOM加载完了就执行,多半会先于你的数据返回。也就是你的数据还没返回这个函数已经执行完了。
对的对的,就是这样的,因为查询数据库需要时间,数据库还没查完他这里就已经执行完了,所以导致没有执行。 有什么办法可以比较好地处理这个问题吗?[/quote]把显示的方法写到获取数据方法的回调里,确保数据回来之后在执行。 而且还要改一下页面显示,确保数据回来之后页面才可以操作。
小吵 2021-01-29
  • 打赏
  • 举报
回复
引用 2 楼 整不明白的回复:
ready是DOM加载完了就执行,多半会先于你的数据返回。也就是你的数据还没返回这个函数已经执行完了。
对的对的,就是这样的,因为查询数据库需要时间,数据库还没查完他这里就已经执行完了,所以导致没有执行。 有什么办法可以比较好地处理这个问题吗?
小吵 2021-01-29
  • 打赏
  • 举报
回复
前面有个查询诗句,查一个表的name列内容, 查全部时不执行,查200个就可以, 改到500就不行了, 别的都没有变化
O==》=====> 2021-01-29
  • 打赏
  • 举报
回复
ready是DOM加载完了就执行,多半会先于你的数据返回。也就是你的数据还没返回这个函数已经执行完了。
Stephen_112 2021-01-29
  • 打赏
  • 举报
回复
跳出代码逻辑,代码不执行可能有俩种情况:1.代码在执行之前就报错了,导致中断,无法执行当前的代码 2.代码在执行之前有判断语句,判断语句跳过了期望执行的代码 代码不执行就这么俩种情况,哪来的这那的状态?

87,987

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧