Проблема с объектом JSON в qooxdoo - PullRequest
0 голосов
/ 11 декабря 2010

Когда я отправляю запрос AJAX в мое webApp, Qooxdoo не может правильно интерпретировать ответ, когда сервер возвращает ответ с заголовком:

Content-Type: application/json; charset=utf-8

Вот пример кода:

var req = new qx.io.remote.Request("http://localhost:8080/bm/login.json","POST","application/json");
req.setFormField('login',this.loginInput.getValue());
req.setFormField('password',this.passwordInput.getValue());

req.addListener("completed", function(response){
    var result = response.getContent();
    alert(result); // expected: object
    alert(result.status); // expected: 200
}, this);

req.send();

В этом случае оповещение (результат) возвращает мне значение null (должно быть объектом).

Приложение Qooxdoo и серверное приложение работают на http://localhost:8080/

Если я изменю заголовок MIME-типа на:

Content-Type: text/html; charset=utf-8

все работает правильно.

Когда я добавляю в Firefox дополнение с именем JSONView, то alert (result); возвращается ко мне:

<doctype html="">
  <div id="json">
    <ul class="obj collapsible">
      <li>
        <span class="prop">session_id</span>
        :
        <span class="string">"e4cfcd8e91c567cce3767375dd3fd9d"</span>
      </li>
      <li>
        <span class="prop">status</span>
        :
        <span class="num">200</span>
      </li>
    </ul>
  </div>
</doctype>

но ответ сервера:

{"session_id":"31446a34db6961a8d67e4e47c96cfb4","status":200}

Итак, я думаю, что Qooxdoo использует ответ, измененный Firefox, а не чистый код, возвращаемый из serwer. В таких средах, как jQuery, у меня никогда не было проблем с этим.

Есть ли какое-то решение для этого, или я должен добавить фреймворк jQuery и использовать jQuery ajax-запросы?

У меня есть: Qooxdoo 1.2.1 и firefox 3.6.12 под Linux.

1 Ответ

0 голосов
/ 13 декабря 2010

, как вы уже упоминали, переход от POST к GET является решением.

Кроме того, метод setFormField внутренне переключается на реализацию IframeTransport.Поэтому, если вы хотите использовать транспорт AJAX, вам следует придерживаться метода setParameter - как вы уже делаете.

...