2010-12-02 168 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(); 

這可能是最基本的問題之一......爲什麼結果編號爲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」第一個「A」代表"Asynchronous"。裏面的函數在get_new_project_id()返回時還沒有運行。該函數將不得不將結果放在其他地方,以便稍後可以檢索。