2013-11-16 3 views
1

Ну, я бы хотел проверить ответ с сервера каждые 5 секунд. Но моя функция успеха внутри $ .ajax просто не работает. Хотя ajax отправляет запросы и получает ответ. Ограничение по времени не превышено, так как функция запускается каждые 5 секунд, и ответ принимается в течение 1 секунды. Если я поставил что-то внутри функции checkMyCreatedGame после $ .ajax, он работает, но функция успеха не работает.Функция успеха в ajax при использовании setInterval не работает

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: http://s2.ipicture.ru/uploads/20131116/zA85WpvL.png As вы можете видеть, что функция console.log внутри успеха не выполняется.

+1

Потому что вы говорите, что jQuery ожидает JSON, а затем отправляет простой текст? – lonesomeday

+1

@lonesomeday: Нет, 'dataType:" json "' это то, что вы ожидаете от сервера, а не то, что вы отправляете на сервер. Я думаю, что код на стороне сервера имеет ошибку и 'success' не вызывается. Если он предоставляет функцию 'error', эту функцию можно вызвать. –

+2

Редактирование кода, я заметил, что у вас есть синтаксические ошибки, такие как отсутствие параметра ':' в параметре данных и т. Д. – adeneo

ответ

1

В вашем вызове AJAX, вы сообщаете JQuery ожидать JSON данные:

dataType:"json", 

Затем сервер возвращает не-JSON данные:

waiting 

JQuery затем пытается разобрать его, как JSON, и неудивительно, терпит неудачу. Если вы расскажете JQuery ожидать текста вместо этого, он будет работать нормально:

dataType:"text", 

Сообщение об этом: если вы обнаружили, что вызов AJAX не удается молча, положить error обработчик в случае, если у вас, вы. получил бы сообщение о том, что у вас есть parsererror.

+0

Спасибо! Это было так. – Twisty

Смежные вопросы