gpt4 book ai didi

jquery - Grails 远程函数 onSuccess 与 onComplete

转载 作者:行者123 更新时间:2023-12-01 00:14:15 26 4
gpt4 key购买 nike

我有以下 Grails 代码:

${remoteFunction(controller: 'myController', 
action: 'myMethod',
params: 'params',
onSuccess: 'mySuccessMethod(data);',
onComplete: 'myCompleteMethod();',
update: 'divName')};

我期望:

  • mySuccessMethod()myCompleteMethod() 在 Ajax 调用完成时分别调用一次

我得到的是

  • mySuccessMethod()立即调用一次
  • 当 Ajax 调用(最终)完成时
    • mySuccessMethod() 被调用第二次
    • myCompleteMethod() 被调用(一次)。

在查找此问题时,Ajax 建议使用 onsuccess,但 Grails 中的实现(即调用时)似乎有所不同。

有人可以解释一下吗?

  • 为什么 mySuccessMethod() 被调用两次?
  • 这是否意味着我们应该使用 onComplete 而不是 onSuccess,至少在 Grails 中是这样?

(已编辑:添加以下信息作为对附加信息请求的响应。)

从remoteFunction()调用生成的HTML如下(我添加了CR和空格以提高可读性):

jQuery.ajax({type:'POST',data:paramString,
url:'/<appname>/myController/myMethod',
success:function(data,textStatus){
jQuery('#divName').html(data);
mySuccessMethod(data);;
},
error:function(XMLHttpRequest,textStatus,errorThrown){
},
complete:function(XMLHttpRequest,textStatus){
myCompleteMethod();
}
});;

来自 mySuccessMethod 的控制台日志包含以下数据:

  • 第一次调用:

    <div class="loading-content"/>
  • 第二次调用:

    <The actual expected response>

谢谢。

最佳答案

onComplete 每次 ajax 调用结束时都会调用,无论成功或失败或任何更新。但是onSuccess会在成功时被调用。这意味着您不能使用 onComplete 代替 onSuccess

请注意 - 从 jQuery 1.5 开始 - 底层 ajax 方法名称已更改:

  • success() 现在是 done()
  • error() 现在是 fail()
  • complete() 现在是 always()

在 Grails 3 中,现在必须直接使用 jQuery.ajax,因此这些新名称很重要。

关于jquery - Grails 远程函数 onSuccess 与 onComplete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22051526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com