Что не так с моим форматом передачи данных с использованием $.getJSON?

#jquery #getjson #cherrypy #ajaxform

#jquery #getjson #вишневый #ajaxформа

Вопрос:

Не мог бы я, пожалуйста, одолжить вторую пару глаз, чтобы посмотреть, что не так с моим форматом запроса Ajax здесь.

Сначала я передал свои параметры как объект, например:

 $.getJSON('selectOne', {'modelClass': 'Address', 'id': '3'}, function(json, textStatus) {
  $('span#address_line').append(json);
});
 

Вместо того, чтобы значение 'Address' отправлялось на серверную часть, ключ 'modelClass' на самом деле был тем, что получает мой сервер. Тот же случай с 'id' вместо '3' .

Затем я изменил часть параметра на массив, например:

     $.getJSON('selectOne', ['Address', '3'], function(json, textStatus) {
      $('span#address_line').append(json);
    });
 

И теперь оба параметра отправляются как undefined .

Это никогда не работает. Что здесь не так?

Мой внутренний сервер представляет собой фреймворк python под названием cherrypy.

РЕДАКТИРОВАТЬ: здесь я вставляю то, что сервер жалуется на первый сценарий:

     500 Internal Server Error

    The server encountered an unexpected condition which prevented it from fulfilling the request.

    Traceback (most recent call last):
      File "/usr/local/lib/python3.4/dist-packages/cherrypy/_cprequest.py", line 670, in respond
... ...
      File "/home/njh/gui_Base.py", line 30, in selectOne
        data_record = db.query(modelClass).filter(modelClass.id == id).one()
    AttributeError: 'str' object has no attribute 'id'
 

Комментарии:

1. В вашем первом примере вы открываете объект { , но закрываете массив ] . Это опечатка в вашем вопросе или в вашем реальном коде?

2. Первый вариант выглядит как синтаксическая ошибка, поскольку на одном конце находится объект, а на другом — массив? Вы должны показать нам, как вы улавливаете это на сервере.

3. @Turnip, спасибо, что заметили, это была опечатка. Я исправил это.

4. @adeneo, спасибо за напоминание. Теперь я вставляю ответ сервера.

5. @JinghuiNiu вы должны JSON.stringify() сначала передать объект, к которому вы переходите $.getJSON() .

Ответ №1:

Спасибо за комментарий webKnjaZ, использование JSON.stringify является правильным решением такого сбоя.