У меня проблема с возвратом данных обратно к функции, в которой я хочу ее вернуть. Код ниже:Как вернуть данные в исходную функцию вызывающего абонента в Javascript?
function ioServer(request_data, callback)
{
$.ajax({
cache: false,
data: "request=" + request_data,
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown){},
success: function(response_data, textStatus){
callback(response_data);
},
timeout: 5000,
type: "POST",
url: "/portal/index.php/async"
});
}
function processRequest(command, item, properties)
{
var request = {};
request.command = command;
request.item = item;
request.properties = properties;
var toServer = JSON.stringify(request);
var id = ioServer(toServer, processResponse);
return id;
}
function processResponse(fromServer)
{
if (fromServer.response == 1)
{
return fromServer.id;
}
}
Я вызываю этот кусок кода, вызывая функцию processRequest внутри другой функции. Отправка запроса и получение ответа работают очень хорошо. Однако мне нужно вернуть значение «id» из ответа обратно в функцию processRequest, чтобы он, в свою очередь, мог вернуть это значение своему вызывающему. Насколько я могу следовать, возврат в processResponse возвращается к $ .ajax, но мне нужно, чтобы он возвращался обратно к processRequest.
BTW оператор if в processResponse относится к значению, заданному скриптом на стороне сервера, чтобы указать, разрешен ли запрос (например, если пользователь не был зарегистрирован, fromServer.response будет 0). Он не имеет ничего общего с процедурами успеха/ошибок объекта $ .ajax.
Большое спасибо за помощь.
@Jani: Спасибо за ответ, но не могли бы вы пояснить немного больше? Функция, где требуется «идентификатор» имеет следующий код:
$(#tabs).tabs('add', '#tab-' + id, 'New tab');
ты говоришь, что я должен попытаться выполнить этот кусок кода в функции processResponse? Потому что это не то, что я хотел сделать; эти функции предназначены для универсального решения для поддержки государственной серверной части. Вот почему я не стал размещать здесь этот код.
Да, спасибо за более ясное разъяснение использования! –
И голосование за потрясающее разъяснение ... –