为什么我不能做.ajax(返回数据;)? jQuery的

时间:2012-06-16 19:26:03

标签: javascript jquery ajax

我正在尝试让我的函数将其获取的数据返回到另一个函数但它似乎不起作用?如何让它返回数据?

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

2 个答案:

答案 0 :(得分:3)

首先,您的playerid()没有返回任何内容,那么您想要使用什么?它只有$.ajax()调用,没有return语句($.ajax()中的一个回调有return语句,但见下文)。

其次,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,获取并将其传递给回调)

答案 1 :(得分: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);