0

我试图让我的函数返回它进入另一个函数的数据,但它似乎不起作用?我怎样才能让它返回数据?

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);
        }
    });
4

2 回答 2

3

首先,你的playerid()不返回任何东西,那么你想用什么?它只有$.ajax()调用,没有返回语句(其中一个回调$.ajax()有返回语句,但见下文)。

其次,JavaScript 会异步执行一些操作,否则每个界面元素都需要等待对用户操作做出反应,直到 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,它获取它并将其传递给回调)

于 2012-06-16T19:32:23.123 回答
1

您可以尝试使用同步 Ajax:

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);
于 2012-06-16T19:32:05.580 回答