2011-11-15 14 views
0

remoteLinkまたはremoteFunctionを使ってアクションを呼び出す方法と、そのアクションがJavaScript関数内で生成/返したものを使う方法はありますか?できるだけ早く私は、アクションの完了時に呼び出すJavaScript関数の内部でパラメータを置くように、関数は、もはやすべてで呼び出されていない、例えば:grails ajaxの機能 - "迷惑なバグ"

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の持つ1は1つが、その後仕事ができるのJavascript機能へのアクションによって生成された結果を取得しませんオン/と?

+0

注これは、Grailsの1.3.7またはGrailsの2.0のいずれかで動作しません。 – Ray

答えて

1

xml-parsingメカニズムには非常に厄介なバグがあります。二重引用符を含むgrailsタグ内の属性を定義し、タグ自体が二重引用符を使用すると、完全な属性定義は無視されます。アラートでは二重引用符を使用します。試してみてください:

<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呼び出しが正常かどうか(成功と失敗)とは無関係に呼び出されます。あなたは、パラメータdataと成功事例の使用onSuccessで結果にアクセスする場合:

<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)')}"/> 
+0

ありがとうございます。本当に "非常に迷惑なバグ"!私はGrails 1.3.7とGrails 2.0であらゆる種類のコンボを試しましたが、おそらくそれを動作させることができないので、おそらくそれらのどこかで二重引用符を使用していました。あなたはGrailsの人々がこれを知っていると思いますか? – Ray

+0

地図をJavascriptの機能に戻して送信すると、すばやくフォローアップすることができます。あなたが知っているJavascript関数の中にgrailsマップを解析するための素敵な/簡単な方法がありますか? – Ray

+0

リモートアクションでは、 'render(resultMap as JSON)'を使用して結果マップをJSONに変換します。 'data'はすぐにjavascriptオブジェクトです。これは、JS側でfirebugと組み合わせて 'console.log(data)'を使ってデバッグすることができます。バグについて:http://jira.grails.org/browse/GRAILS-1973?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel。残念ながら、それは非常に悲しい "修正価値"とはみなされませんでした。 – Chris

関連する問題