[英]jQuery is too fast (faster than mysql)
我正在开发一个在后台使用jquery和post方法的cakephp应用程序。
当cakephp在后台发送发布请求时,div必须刷新(或重新生成),并且它必须显示新内容。
Post方法调用执行MySQL查询的其他php文件。 div还调用mysql,并从数据库中选择适当的数据。
问题是在第一个mysql查询之前div被刷新(或重新生成)。 这样就可以了,但是如何告诉div稍等一下,直到执行mysql查询呢?
这是我的代码...
$.post('/publications/deleteItem/' + valueClicked, function(data) {
}, 'html');
$.post('/publications/getItems/' + val + '/' + val1, function(data) {
$("#relatedNumerationPublications").empty().append(data);
}, 'html');
更新:好的,所以我知道问题出在哪里。 像下面的Chetan Sastry建议的那样,尝试过:
$.post('/publications/deleteItem/' + valueClicked, function() {
$.post('/publications/getItems/' + val + '/' + val1, function(data) {
$("#relatedNumerationPublications").empty().append(data);
}, 'html');
}, 'html');
问题是引起对“ / publications / deleteItem /” + valueClicked的响应,但未找到“页面”。 猜想这是cakephp的原因(实际上,该页面存在,但是cakephp返回的却不是)。
是否有可能以某种方式跳过错误“找不到页面”,并继续执行代码?
您将regenerate
函数放在哪里?
我认为,如果将其放在onSuccess
回调函数中应该没问题。
Ajax调用(按照定义)是异步的,因此,如果您仅在ajax调用之后放置下一个javascript指令,您将始终遇到该问题。 如前所述,使用onSuccess参数或同步ajax调用(我记得jquery提供了类似的功能)。
在第一个SQL操作进行更改之后,您可以经常进行Ajax轮询。 只有在从PHP中获得新的轮询值之后,才进行重新生成。
只需将获取项目的调用放在delete items函数的回调中即可。 像这样的东西
$.post('/publications/deleteItem/' + valueClicked, function() {
$.post('/publications/getItems/' + val + '/' + val1, function(data) {
$("#relatedNumerationPublications").empty().append(data);
}, 'html');
}, 'html');
现在,您的getItems将等待,直到deleteItems完成。 (假设您没有使用异步后端技术!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.