Ajax-запрос JQuery внутри функции: как вернуть полученное значение? - PullRequest
0 голосов
/ 01 сентября 2010

Я хочу написать функцию javascript, которая сделает запрос ajax к PHP-скрипту и вернет его результат.Вот как это выглядит:

function myjsfunc(some_data)
{
    $.post(
            "/myscript.php",
            { some_data: some_data },
            function(response)
            {
                result = response;
            }
          );
    return result;
}

Проблема в том, что result всегда неопределен.Это может быть потому, что переменная result не находится в myjsfunc пространстве имен?Или потому, что результат функции успеха получен после обработки основной функции?

В любом случае, как я могу получить желаемый результат?Есть ли способ?

1 Ответ

5 голосов
/ 01 сентября 2010

Вы не можете вернуть результат, потому что он не определен к моменту завершения вашей внешней функции. Ваш AJAX-вызов происходит асинхронно, а функция обратного вызова вызывается после того, как происходит POST. Чтобы иметь дело с вашим результатом, вам нужно сделать что-то вроде этого:

function myjsfunc(some_data) {
    $.post("/myscript.php", { some_data: some_data }, function(response) {
            if (some_data.prop) {
                myReturnHandler(response);
            } else {
                myOtherHandler(response);
            }
        }
    );
}

Где вы будете определять myReturnHandler отдельно, и ему нужно будет знать, как принять обработку данных результата.

- отредактировано -

Вы также можете выполнить тесты, чтобы определить, как обрабатывать ваш ответ. Добавлен дополнительный код для демонстрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...