繁体   English   中英

jQuery太快(比mysql快)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM