Получить возвращаемое значение из функции JavaScript - PullRequest
0 голосов
/ 02 декабря 2010
function get_new_project_id() {
    function subFunction() {
        $.ajax({
          url: 'includes/ajax.php?request=create_untitled_project',
          success: function(response) {
            return response; // result is a number like 19
          }
        });
    }
    return subFunction();
};

var resultnumber = get_new_project_id();

это, наверное, один из самых основных вопросов ... почему результат № 19? Как я могу сделать это, чтобы он мог вернуть HTML или текстовое значение из функции? иногда я получаю объект запроса xmlhttp. я просто хочу вернуть простое число.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

Первое «A» в «AJAX» означает «Асинхронный» .Функция внутри еще не запущена к моменту возврата get_new_project_id().Функция должна будет поместить результат в другое место, чтобы его можно было найти позже.

2 голосов
/ 02 декабря 2010

Это потому, что функция success выполняется асинхронно, потому что это AJAX-вызов. Поэтому нет смысла возвращать значение в обратном вызове AJAX, потому что оно может выполняться много раз после возвращения содержащей функции.

Чтобы исправить это, вам нужно будет манипулировать результатом внутри функции успеха, потому что они будут доступны только там:

function subFunction() {
    $.ajax({
        url: 'includes/ajax.php?request=create_untitled_project',
        success: function(response) {
            doSomethingWithTheResult(response);
        }
    });
    return 'AJAX request initiated but results will be available later';
}
...