【发布时间】:2011-10-19 14:46:16
【问题描述】:
所以我一直在 Scala 中使用 Lift,并且非常享受它。我可能只是遗漏了 lift javascript 库中存在的东西,但我找不到任何使用作用域 javascript 回调的方法。似乎 Lift 处理回调的方式是将回调作为函数名传递,并让 Lift 返回一个 Call() 函数的 JsCmd。
我的电梯代码很大程度上基于这个例子http://demo.liftweb.net/json_more 我的 javascript 看起来有点像
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 成为要解除的 AJAX 调用。即电梯示例中的 callNoParam() ,而 chainAction 是作用域回调。有没有办法在我想念的电梯中做到这一点?为清楚起见,我已经能够获取此代码来调用提升函数,但不能正确处理回调。
谢谢。
编辑
在阅读 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() 调用中的 theSuccess 或 theFailure。我的调查还在继续。如果有人在 is.jsCmd 上有任何好的资源,将不胜感激。
【问题讨论】:
-
你试过
SHtml.ajaxCall功能吗?不知道是不是你要找的。span> -
您没有得到答案的部分原因是这个问题确实令人困惑。我想我可以回答它,如果我能确定你想要什么。看来您希望 Javascript 函数使用 AJAX 在服务器端调用某些东西,然后服务器端部分将在完成时调用
chainAction(response)并返回响应。对吗?
标签: ajax scala callback closures lift