Как отправить массив JavaScript в cherrypy - PullRequest
1 голос
/ 09 ноября 2011

У меня есть пост jQuery, похожий на

var arr = ['some', 'string', 'array'];

jQuery.post('saveTheValues', { 'values': arr },
            function(data)
            {
                //do stuff with the returned data
            }, 'json'
           );

И он переходит к веселой функции:

@cherrypy.expose
def saveTheValues(self, values=None):
    #code to save the values

Но запуск JavaScript возвращает 400 Bad Request, потому что Unexpected body parameters: values[].

Как я могу отправить массив cherrypy?

1 Ответ

7 голосов
/ 09 ноября 2011

Проблема в том, что более новые версии jQuery отправляют фигурные скобки как часть имени, которое не нравится CherryPy. Одно из решений состоит в том, чтобы поймать это на стороне CherryPy:

@cherrypy.expose
def saveTheValues(self, **kw):
    values = kw.pop('values[]', [])
    #code to save the values

Другое решение состоит в том, чтобы позволить jQuery использовать традиционный метод отправки параметров путем сериализации параметров с традиционным флагом, установленным в значение true. Следующее работает с кодом CherryPy без изменений:

var arr = ['some', 'string', 'array'];

jQuery.post('saveTheValues', $.param({'values': arr}, true),
    function(data)
    {
        //do stuff with the returned data
    }, 'json');
...