2010-12-02 4 views
0
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(); 

это, вероятно, один из самых основных вопросов ... почему isnt resultnumber 19? как я могу это сделать, чтобы он мог возвращать html или текстовое значение из функции? иногда я получаю объект запроса xmlhttp. я просто хочу, чтобы простое число было возвращено.Получить возвращенное значение от функции javascript

ответ

2

Это потому, что функция 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'; 
} 
+0

спасибо, наконец, получил работу, основанную на вас и предложение ignacio. – 2010-12-02 08:31:36

2

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

Смежные вопросы