Извините, но я новичок в jQuery, так что это может показаться глупым вопросом.
У меня есть общая функция, которая вызовет $.get
для извлечения некоторых данных из URL-адреса, и тогда я хочу назначить переменную, а не элемент управления.
Здесь моя функция, было упрощено очистить "шум"...
function LoadFromURL(url) {
var response = "";
$("textarea#dump").val("url=" + url); // Shows the URL, no problem
$.get(url, "", function (data) {
response = data;
$("textarea#dump").val(response); // Shows the data, no problem
});
$("textarea#dump").val(response); // Shows NOTHING!
return (response);
}
Проблема в том, что значение response
довольно счастливо назначает внутри функции обратного вызова, но когда он получает return (response)
переменная пуста.
Строка " Shows NOTHING
слишком рано, чтобы быть полезной. Вы должны начать с функции обратного вызова и перейти оттуда. Вы можете вызвать метод из обратного вызова.
Назовите это так:
var cb = function(data) {
$("textarea#dump").val(data);
}
LoadFromUrl("someUrl", cb);
или inline следующим образом:
LoadFromUrl("someUrl", function(data) {
$("textarea#dump").val(data);
});
Измените свой метод следующим образом:
function LoadFromURL(url, cb) {
$("textarea#dump").val("url=" + url); // Shows the URL, no problem
$.get(url, "", function (data) {
cb(data); //<-- call the CallBack method
});
}
Это больше похоже на javascript, чем jQuery, обратные вызовы - это образ жизни в js.