使用setInterval时,ajax中的成功函数不起作用

时间:2013-11-16 15:04:05

标签: javascript jquery ajax setinterval

我想每隔5秒检查一次服务器的回答。但是我在$ .ajax中的成功功能是行不通的。虽然ajax发送请求并获得响应。由于功能每5秒运行一次并且响应在1秒内收到,因此不会超过时间限制。 如果我在$ .ajax之后放入checkMyCreatedGame函数,它确实有效但成功函数没有。

var checkMyGame;
checkMyGame =setInterval(checkMyCreatedGame,5000);
var checkMyCreatedGame = function(){
    $.ajax({
            url   :'../cgi-bin/lobby.py',
            type  :"GET",
            cache :false,
            data {
                "checkMyGameId":createdGameId,
                "player":playerName
            },
            dataType:"json",
            success:function(jsonData){
                console.log(jsonData)

            }
    });
};

当我运行此代码时,这是我的firebug控制台日志(不要注意上面的内容): firebug

以下是相同的屏幕截图,但未通过stackoverflow调整大小:https://i.stack.imgur.com/e9HBa.png 正如您所见,成功函数内的console.log未被执行。

1 个答案:

答案 0 :(得分:3)

在你的AJAX调用中,你告诉jQuery期望JSON数据:

dataType:"json",

然后您的服务器返回非JSON数据:

waiting

然后jQuery尝试将其解析为JSON,并且不出所料,失败了。如果你告诉jQuery期待文本,它将正常工作:

dataType:"text",

这样做的消息是:如果你发现AJAX调用无声地失败,请放入error处理程序。如果有,你会收到一条消息,告诉你有{{1} }}