gpt4 book ai didi

javascript - grails ajax功能- “annoying bug”

转载 作者:行者123 更新时间:2023-12-02 15:37:33 24 4
gpt4 key购买 nike

如何使用remoteLink或remoteFunction调用一个 Action ,然后使用该 Action 在JavaScript函数中生成/返回的内容?一旦将参数放入JavaScript函数中以在操作完成时调用,该函数将不再被调用,例如:

    onComplete: 'processUpdate(e);'    --or--

after: 'processAfter(e)'

然后,就不再调用Javascript函数了。 Fyi:整行代码是:
<g:select name="week" from="${strategyInstance.constraints.week.inList}" value="${strategyInstance?.week}" valueMessagePrefix="strategy.week" noSelection="['': '']"
onchange="${remoteFunction(action: 'produceUpdate', params: '\'update=\' + this.value', onComplete:'processUpdate(e);', before: 'alert("doing before")', after: 'processAfter(e)')}"/>

如果我从Javascript函数名称中删除了参数“e”,即:
 onComplete: 'processUpdate();'

然后调用该函数。如果我声明该函数:
  function processUpdate(e) {
alert('processUpdate: ' +e)
}

它会调用该函数,但会通过以下方式提醒我:
     processUpdate: undefined

那么,使用Grails的人如何将 Action 产生的结果转换为Javascript函数,然后就可以使用?

最佳答案

xml解析机制中存在一个非常烦人的错误:一旦在grails-tag中定义了包含双引号的属性,并且标签本身使用双引号,则完整的属性定义将被忽略。您的警报使用双引号。尝试:

<g:select name="week" from="${strategyInstance.constraints.week.inList}" 
value="${strategyInstance?.week}"
valueMessagePrefix="strategy.week"
noSelection="['': '']"
onchange="${remoteFunction(
action: 'produceUpdate',
params: '\'update=\' + this.value',
onComplete:'processUpdate(e);',
before: 'alert(\'doing before\')',
after: 'processAfter(e)')}"/>

onComplete的调用与AJAX调用是否正确无关(因此成功和失败)。如果要成功访问结果,请使用 onSuccessdata参数:
<g:select name="week" from="${strategyInstance.constraints.week.inList}" 
value="${strategyInstance?.week}"
valueMessagePrefix="strategy.week"
noSelection="['': '']"
onchange="${remoteFunction(
action: 'produceUpdate',
params: '\'update=\' + this.value',
onSuccess: 'processUpdate(data);',
before: 'alert(\'doing before\')',
after: 'processAfter(e)')}"/>

关于javascript - grails ajax功能- “annoying bug”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8132021/

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