Ajax scala lift中的作用域javascript回调
所以我一直在Scala玩Lift,我很享受它。我可能只是缺少了lift javascript库中存在的一些东西,但是我还没有找到任何使用作用域javascript回调的方法。处理回调的lift方法似乎是将回调作为函数名传递,并让lift返回一个调用函数的JsCmd() 我的电梯代码主要基于此示例 我的javascript看起来有点像Ajax scala lift中的作用域javascript回调,ajax,scala,callback,closures,lift,Ajax,Scala,Callback,Closures,Lift,所以我一直在Scala玩Lift,我很享受它。我可能只是缺少了lift javascript库中存在的一些东西,但是我还没有找到任何使用作用域javascript回调的方法。处理回调的lift方法似乎是将回调作为函数名传递,并让lift返回一个调用函数的JsCmd() 我的电梯代码主要基于此示例 我的javascript看起来有点像 function operation(config) { var actions = config.actions, action = ac
function operation(config) {
var actions = config.actions,
action = actions.shift(),
name = config.name;
function chainAction(response) {
if (actions.length > 0) {
action = actions.shift();
action.action(name, chainAction);
}
}
action.action(name, chainAction);
}
operation({
name: "ajax",
actions: [
{ action: ajaxCall1 },
{ action: ajaxCall2 }
]
});
我希望ajaxCall1和ajaxCall2成为对lift的AJAX调用。i、 在提升示例中为e.callNoParam(),而chainAction为作用域回调。在电梯里有没有我不知道的方法?为了清楚起见,我已经能够让这段代码调用lift函数,但无法正确处理回调
谢谢
编辑
在阅读lift生成的javascript代码时,看起来确实存在成功/失败回调的占位符。特别是,它看起来像这条电梯线
AllJsonHandler.is.jsCmd
正在生成这行javascript
function F86737576748N5SY25(obj) {liftAjax.lift_ajaxHandler('F86737576748N5SY25='+ encodeURIComponent(JSON.stringify(obj)), null,null);}
哪个引用了这个方法
lift_ajaxHandler: function(theData, theSuccess, theFailure, responseType)
但不允许我将成功或失败传递给jQuery.ajax()调用。我的调查还在继续。如果有人在is.jsCmd上有任何好的资源,我们将不胜感激。下面是一段代码,它向页面添加了一个Javascript函数
doCallback
(在#占位符
中)。此函数将向控制台打印一行,然后向服务器回拨函数commandCallback
def addExecuteCallback(ns: NodeSeq):NodeSeq = {
val log = JsRaw("console.log('[doCallback] Generated from Lift.');").cmd &
SHtml.ajaxCall(JsRaw("commandString"), commandCallback _)._2.cmd
val f = JsCmds.Function("doCallback", List[String](), log)
("#placeholder" #> JsCmds.Script(f)).apply(ns)
}
在commandCallback
的末尾,您可以返回:
JsCmds.Run(“chainAction(“+valueOfResponse+”);”
您是否尝试过SHtml.ajaxCall
函数?我不知道这是否是你想要的。你没有得到答案的部分原因是这个问题确实令人困惑。如果我能确定你想要什么,我想我可以回答。似乎您希望Javascript函数使用AJAX在服务器端调用某些内容,服务器端部分将在响应完成后调用chainAction(response)
。对吗?