Функция успеха в ajax при использовании setInterval не работает

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

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, функция успеха не выполняется.


person Tw1sty    schedule 16.11.2013    source источник
comment
Потому что вы говорите jQuery ожидать JSON, а затем отправляете простой текст?   -  person lonesomeday    schedule 16.11.2013
comment
@lonesomeday: Нет, dataType:"json" - это то, что вы ожидаете от сервера, а не то, что вы отправляете на сервер. Я думаю, что код на стороне сервера содержит ошибку и success не вызывается. Если он предоставляет функцию error, эта функция может быть вызвана.   -  person Khanh TO    schedule 16.11.2013
comment
Редактируя ваш код, я заметил, что у вас есть синтаксические ошибки, например, отсутствует : в параметре данных и т. Д.   -  person adeneo    schedule 16.11.2013
comment
@KhanhTO Точно: сервер отправляет успешный ответ (200 OK) с контентом, который не является JSON, когда jQuery ожидает JSON.   -  person lonesomeday    schedule 16.11.2013
comment
@lonesomeday: возможно, я ошибся, я думал, что отправка простого текста осуществляется из браузера.   -  person Khanh TO    schedule 16.11.2013
comment
Да, проблема заключалась в том, что я отправлял простой текст вместо JSON. Большое спасибо! ‹3   -  person Tw1sty    schedule 16.11.2013


Ответы (1)


В вызове AJAX вы указываете jQuery ожидать данных JSON:

dataType:"json",

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

waiting

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

dataType:"text",

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

person lonesomeday    schedule 16.11.2013
comment
Спасибо! Это было так. - person Tw1sty; 16.11.2013