#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
является правильным решением такого сбоя.