【发布时间】:2013-11-16 15:04:05
【问题描述】:
我想每 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)
}
});
};
这是我运行此代码时的萤火虫控制台日志(不要注意上面的内容):
这是相同的屏幕截图,但未通过 stackoverflow 调整大小:https://i.stack.imgur.com/e9HBa.png 如你所见,console.log里面的success函数没有被执行。
【问题讨论】:
-
因为你告诉 jQuery 期待 JSON 然后发送纯文本?
-
@lonesomeday:不,
dataType:"json"是您对服务器的期望,而不是您发送到服务器的。我认为服务器端的代码有错误,success没有被调用。如果他提供了error函数,这个函数可能会被调用。 -
编辑您的代码,我注意到您有语法错误,例如在数据选项中缺少
:等。 -
@KhanhTO 确切地说:当 jQuery 期待 JSON 时,服务器会发送一个包含非 JSON 内容的成功响应(“200 OK”)。
-
@lonesomeday:也许我误会了,我以为“发送纯文本”来自浏览器。
标签: javascript jquery ajax setinterval