等待AJAX​​在继续Javascript代码之前返回成功?

时间:2016-10-25 21:10:48

标签: javascript php sql ajax database

我知道,很多其他时间也会问过类似的问题,但我的情况相当具体,据我所知,此前从未涉及过。至少从我能找到的地方开始。

我正在做的是使用UID构建对象。构建对象的所有内容都需要此UID,并且要求在完成任何操作之前将其验证为唯一。

我在javascript中随机生成UID,并且我正在对SQL数据库中的所有其他条目进行检查。我使用PHP和Ajax发布到数据库。

我遇到的核心问题是Javascript不会等待Ajax响应而是继续滚动。 Ajax必须使用成功处理程序。这对我来说是绝对不可能的,因为我不能做任何事情,直到我确定UID已经过验证。

有没有解决方法或解决方案?承诺是行不通的,因为正如我之前所说,UID在构建对象本身时是不可或缺的,因此使用占位符是行不通的。

提前致谢!

3 个答案:

答案 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的解决方案。