У меня большая проблема, и я не знаю, как ее решить.
Мне нужно возвращать значения (в основном, строки), чтобы использовать их в различных контекстах. В качестве примера мне нужно проверить, является ли что-то 0 или 1 в операторе if / else или вставить строку в различные html-элементы, прежде чем анализировать это через JavaScript в DOM. Вот упрощенный пример того, что я ищу:
<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)? Любые идеи приветствуются! Спасибо вам большое! :)