Проблема с запросом Qooxdoo REST JSON - неожиданный токен, а затем тайм-аут

Я изучаю фреймворк Qooxdoo и пытаюсь заставить его работать с небольшим веб-сервисом Django. Веб-сервис Django просто возвращает данные JSON следующим образом:

{ "name": "Football", "description": "The most popular sport." }

Затем я использую следующий код для запроса этого URL:

var req = new qx.io.remote.Request(url, "GET", "application/json");
req.toggleCrossDomain();

req.addListener("completed", function(e) {
                 alert(e.getContent());
                    });
req.send();

К сожалению, когда я выполняю код, я получаю неожиданную ошибку токена, а затем запрашиваю тайм-ауты.

Uncaught SyntaxError: Unexpected token :
Native.js:91013011 qx.io.remote.RequestQueue[246]: Timeout: transport 248
Native.js:91013011 qx.io.remote.RequestQueue[246]: 5036ms > 5000ms
Native.js:91013013 qx.io.remote.Exchange[248]: Timeout: implementation 249

JSLint сообщает, что это допустимый JSON, поэтому мне интересно, почему Qooxdoo не анализирует его правильно.


person freiksenet    schedule 24.05.2010    source источник


Ответы (2)


Проблема, вероятно, в этой строке:

req.toggleCrossDomain();

crossDomain по умолчанию имеет значение false, поэтому toggleCrossDomain устанавливает для него значение true. Это вынуждает qx.io.remote.Request использовать транспорт сценария, который не работает как обычный XMLHttpRequest: запрос должен содержать идентификатор, а ответ сервера должен использовать тот же идентификатор и заключать фактический ответ в вызов. в qx.io.remote.transport.Script._requestFinished(). Более подробно это объясняется в документации к пакету qx.io.remote:

http://demo.qooxdoo.org/current/apiviewer/#qx.io.remote

person Daniel Wagner    schedule 25.05.2010

Срок действия вашего запроса истек. URL правильный? Есть ли проблемы с брандмауэром при подключении к нему? По сути, ваш код не получает ожидаемый JSON, а вместо этого получает ошибку тайм-аута.

person David M    schedule 24.05.2010
comment
Из журналов я вижу, что сервер правильно получает запрос, поэтому URL-адрес правильный, и запрос достигает его. - person freiksenet; 24.05.2010
comment
ХОРОШО. Тогда истекает время ответа. Ваша ошибка связана с тем, что сообщение об ошибке (которое вы на самом деле опубликовали выше) анализируется как JSON, а это не так. - person David M; 24.05.2010
comment
Я увеличил тайм-аут до 1000000 мс, консоль JavaScript показывает, что сначала выдает эту непредвиденную ошибку токена, и только затем (намного позже) получает тайм-аут. - person freiksenet; 24.05.2010