2012-06-16 45 views
0

我試圖讓我的函數返回它鑽進另一個函數的數據,但它似乎並沒有工作?我怎樣才能得到它返回的數據?爲什麼我不能.ajax(返回數據;)? jQuery的

function playerid(playername) { 
    $.ajax({ 
     type: "POST", 
     url: "fn.php?playerid", 
     data: "playername="+playername, 
     success: function(data) { 
      //$("#test").text(data); 
      return data; 
     } 
    }); 
} 

我想用它的另一個功能是這樣

showBids(playerid(ui.item.value)); 




function showBids(playerid) { 
    $.ajax({ 
     type: "POST", 
     url: "poll.php?", 
     async: true, 
     dataType: 'json', 
     timeout: 50000, 
     data: "playerid="+playerid, 
     success: function(data) { 

      //.each(data, function(k ,v) { 

      //}) 
      //$("#current_high").append(data); 

      setTimeout("getData()", 1000); 
     } 
    }); 
+0

心不是數據??的 – ppsreejith

+0

可能重複[jQuery的:Ajax調用成功後返回的數據(http://stackoverflow.com/questions/5316697/jquery-return-data-after-ajax-call-success) –

回答

3

首先,您的playerid()不返回任何內容,那麼您想使用什麼?它只有在$.ajax()調用它,沒有return語句(在$.ajax()回調的一個具有return語句,但是見下文)。

其次,JavaScript的做一些事情asynchonously,否則每個界面元素都需要等待用戶的操作作出反應,直到從服務器的AJAX調用返回。

使用基於事件的方法,通過將回調到一些功能。然後,他們完成後,只需調用傳遞它們結果的回調:

function getplayerid(playername, callback) { 
    $.ajax({ 
     type: "POST", 
     url: "fn.php?playerid", 
     data: "playername="+playername, 
     success: function(data) { 
      //$("#test").text(data); 
      callback(data); 
     } 
    }); 
} 

,然後用它這樣的:

getplayerid(ui.item.value, showBids); 

(注意函數名稱改變,因爲它實際上並沒有回報球員ID,它得到它,並將其傳遞到回調)從嵌套函數返回

+0

謝謝你,它的工作奇妙! – d123

+0

@ user1053408:歡迎您:) – zizozu

1

你可以嘗試使用syncronous阿賈克斯:

function playerid(playername) { 
    return $.ajax({ 
     type: "POST", 
     url: "fn.php?playerid", 
     data: "playername="+playername, 
     async : false //making Ajax syncronous 
    }).responseText; 
} 

否則你需要使用showBids功能回調:

function playerid(playername, callback) { 
    $.ajax({ 
     type: "POST", 
     url: "fn.php?playerid", 
     data: "playername="+playername, 
     success: function(data) { 
      callback(data); 
     } 
    }); 
} 
//Usage 
playerid(ui.item.value,showBids); 
+0

異步錯誤已過時,我應該還是用它?任何其他方式? – d123

+0

@ user1053408如果你不想使用它,那麼唯一的辦法就是使用回調,我在回答中提出的建議。 – Engineer

+0

@ user1053408您能否顯示鏈接,在哪裏提到syncronous ajax已棄用。 – Engineer

相關問題