我知道,很多其他时间也会问过类似的问题,但我的情况相当具体,据我所知,此前从未涉及过。至少从我能找到的地方开始。
我正在做的是使用UID构建对象。构建对象的所有内容都需要此UID,并且要求在完成任何操作之前将其验证为唯一。
我在javascript中随机生成UID,并且我正在对SQL数据库中的所有其他条目进行检查。我使用PHP和Ajax发布到数据库。
我遇到的核心问题是Javascript不会等待Ajax响应而是继续滚动。 Ajax必须使用成功处理程序。这对我来说是绝对不可能的,因为我不能做任何事情,直到我确定UID已经过验证。
有没有解决方法或解决方案?承诺是行不通的,因为正如我之前所说,UID在构建对象本身时是不可或缺的,因此使用占位符是行不通的。
提前致谢!
答案 0 :(得分:1)
您可以发送同步Ajax请求,例如:
var response = $.ajax({ url : "http://api.jquery.com/jquery.ajax/", async : false });
(虽然这不是一个很好的做法)
答案 1 :(得分:0)
确定。一种可能的解决方案,如果您的UID是随机生成的,您可以使用脚本标记将其直接提供给index.html。
<head>
<script src="path_to_url_that_provides_generated_script"></script>
<script .... other scripts></script>
</head>
这个生成的脚本将类似于:
var UID = "xxxx-xxxx-xxxx-xxxx";
这样你甚至不需要做一个ajax请求,因为你的uid会在处理任何其他脚本之前知道。
答案 2 :(得分:0)
我发现,最好的方法是重写我的代码,直到我首先拥有UID才开始创建对象。虽然这确实需要花费大量时间来完成并确保不存在任何笨拙的错误,但是没有其他真正的解决方案既简单又有效。
事实证明,远见似乎总是让优秀的程序员不再写作和重写他们的作品。
特别感谢@Vladimir M的解决方案。