我正在开发一个在后台使用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返回就好了)。
是否可能以某种方式跳过错误“找不到页面”,并继续使用代码?
答案 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结束。 (假设您没有使用异步后端技术!)