2013-06-26 1 views
3

Использование Dajaxice Я хочу передать параметр функции python.dajaxice: передача аргумента функции python

В файле HTML я имею следующее заявление

<a href="#" onclick="Dajaxice.myapp.sayhello(Dajax.process,{'dir':3})"> <i class="icon"></i></a> 

и в моем ajax.ps файл У меня есть функция

@dajaxice_register 
def sayhello(request, dir): 
    print(dir) 

Он отлично работает, если удалить второй аргумент реж в оба html и файл python, но с наличием dir, я получаю сообщение об ошибке «Что-то не так».

Кто-нибудь знает, что может быть проблемой здесь?

+0

Вы пытались указать 'method = 'GET'' для вашей функции sayhello в декораторе? Просто чтобы проверить. – maulik13

+0

Хм, я думаю, у вас есть точка здесь. Если я зарегистрирую его с помощью метода = 'GET', я получаю сообщение об ошибке: dajaxice_register() получил неожиданный аргумент «метод» ключевого слова. Вы знаете, почему это так? Похоже, что установка может быть испорчена? – user695652

+0

Это странно. Вы знаете, где это исключение возникает в стеке вызовов? И какую версию dajaxice вы используете? В последнем коде GitHub я не вижу такого исключения, если не пропущу что-то. – maulik13

ответ

1

если вы используете Python 3. *, то в модуле dajaxIce сделать изменения файла venv/Lib/python3.2/сайт-пакеты/dajaxice/views.py

def safe_dict(d): 
     """ 
     Recursively clone json structure with UTF-8 dictionary keys 
     http://www.gossamer-threads.com/lists/python/bugs/684379 
     """ 
     if isinstance(d, dict): 
      return dict([(k, safe_dict(v)) for k, v in d.items()]) 
     elif isinstance(d, list): 
      return [safe_dict(x) for x in d] 
     else: 
      return d 
0

изменить SayHello к:

def sayhello(request): 
    my_dict=json.loads(request.POST['argv']) 
    dir=my_dict['dir'] 
    print(dir)