获取带有类的字符串,并返回带有父函数的字符串
JavaScript: MooTools - Get string with class, return it with parent function
我有一个大问题,不知道如何解决。
我需要返回值(主要是字符串)以便在各种上下文中使用它们。例如,我需要检查if/else语句中的内容是0还是1,或者在通过JavaScript将其解析到DOM之前在各种html元素中插入字符串。下面是我正在寻找的一个简化示例:
<script>
function output() {
return "Hello world!";
}
function check() {
return 3;
}
(function() {
if(check() !== 5) {
$(someElement).set("html", "<p>" + output() + "</p>");
}
})();
</script>
现在让我们进入最棘手的部分:在返回值之前,我需要从外部文件中的JSON上下文中请求它,该文件从后端加载内容。我编写了一个包含Request的类。JSON MooTools类,使其更容易用于各种请求:
<script>
var backendCall = new Class({
Implements: Options,
options: {
url: "gateway/?contentType=application/json"
},
initialize: function(options) {
this.setOptions(options);
if(!instanceOf(this.options.prms, Array)) {
this.options.prms = [];
}
this.fire();
},
fire: function() {
new Request.JSON({
data: JSON.encode({
"methodName": this.options.req,
"parameters": this.options.prms,
"serviceName": this.options.srv
}),
onFailure: function() {
alert("JSON-Request failed.");
},
onSuccess: function(data) {
this.callback(data);
}.bind(this),
url: this.options.url
}).send();
},
callback: function(data) {
alert(data); // works
}
});
function request(req, srv) {
new backendCall({
req: req,
srv: srv
});
}
window.addEvent("load", function() {
/* is there a way to return the data string here?
or is it impossible? */
request("someValue", "demoTest");
});
</script>
当在引用JSON-Request输出的回调函数中执行硬编码函数时,这非常有效。但是我需要让这部分更可变因为我想以不同的方式使用输出。是否有一种方法可以让回调只是返回输出,并将其引用到父请求()函数,让它返回值?也许用。pass(data)?任何想法都欢迎!非常感谢!:)
好吧。XHR是异步的(ajax),所以你只能在onComplete
事件上获得回调值。
通常,你等待响应,然后onComplete可以转到你正在检查或完成的下一个项目。
例如,在伪代码中:
form.addEvent("submit", function(e) {
e.stop();
var errors = false;
var finalise = function() {
if (!errors)
this.send();
else
alert("errors found!");
}.bind(this);
if (!field.length) errors = true;
... other sync checks.
// does it exist?
new Request.JSON({
url: "/accountCheck/",
method: "get",
onComplete: function(data) {
if (data.id) {
// already exists
errors = true;
}
// call finalise
finalise();
}
}).send({user: field.value});
}
当然,你可以在请求对象上设置async: false
,它将阻塞UI,直到它完成,所以onComplete可以设置你的var,并且在request .send()之后的那一行将有它可用。
你可以做一个适当的验证器(或使用一个现成的),它定义了一个规则集,并按顺序检查它们,理解async onComplete,并有一个堆栈的检查工作,有很多这样的例子,甚至mootools-more有一个相当广泛的表单验证器(虽然我没有使用它自己,所以不能证明它如何处理异步检查)
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- JavaScript按钮/输入/函数,字符串反转
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 编辑输出字符串函数ol.control.MouseControl
- 如何在 Javascript 和 qUnit 中模拟字符串函数
- 如何在for()语句中执行字符串函数
- GulpJS:对SVG文件内容执行字符串函数
- 在干净的字符串函数之间添加空格
- 错误将导致最长重复子字符串函数
- Javascript:替换在IE7-8中不工作的字符串函数
- 如何使用拆分字符串函数的结果在Angular.js中进行排序
- 反转不工作的字符串函数
- 在Python中,你可以像在JavaScript中那样创建字符串函数的原型
- 我如何使用简单的子字符串函数在javascript标题大小写句子
- Javascript字符串函数
- 来自字符串函数的图像
- 有没有任何方法可以在不使用javascript子字符串函数或regex的情况下生成这个字符串日期表示(带时区)
- 在从CFC返回结果之前,对AJAX查询执行字符串函数
- 不能调用下划线.字符串函数' lpad '用于错误'未捕获的类型错误:_.Lpad不是一个函数