jQuery太快了(比mysql快)

时间:2010-09-06 20:32:03

标签: php jquery cakephp post

我正在开发一个在后台使用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是Page Not Found。猜测这是cakephp的原因(实际上,该页面存在,但是cakephp返回就好了)。

是否可能以某种方式跳过错误“找不到页面”,并继续使用代码?

4 个答案:

答案 0 :(得分:2)

您在哪里放置regenerate功能?

我认为如果你把它放在你的onSuccess回调函数上应该没问题。

答案 1 :(得分:2)

Ajax调用(根据定义)是异步的,所以如果你只是在ajax调用之后立即放入下一个javascript指令,那么你将始终遇到这个问题。如上所述,使用onSuccess参数或同步ajax调用(我记得jquery提供了类似的东西)。

答案 2 :(得分:0)

在第一次更改SQL操作之后,您可以经常进行Ajax轮询。只有在从PHP返回一个新的轮询值后再进行重新生成。

答案 3 :(得分:0)

只需拨打电话即可获取删除项目功能的回调中的项目。像这样的东西 -

$.post('/publications/deleteItem/' + valueClicked, function() {
    $.post('/publications/getItems/' + val + '/' + val1, function(data) {
        $("#relatedNumerationPublications").empty().append(data);
    }, 'html');
}, 'html');

现在你的getItems会等到deleteItems结束。 (假设您没有使用异步后端技术!)