2010-08-25 5 views
1

Я имею проблему с помощью Djajaxice с международными символами ...Проблемы с Джанго/Dajaxice и международными символами

У меня есть шаблон Джанго ... в этом шаблоне выглядит следующим образом выберите:

<select name="region" id="id" onchange="Dajaxice.crc.regions('my_callback',{'data':this.value});"> 
     <option value="" selected="selected" ></option> 
     {% for region in regions %} 
       <option value="{{ region.region }}">{{ region.region }}</option> 
     {% endfor %} 
    </select> 

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

Вот функция в файле ajax.py

def regions(request, data): 
    CityList = City.objects.filter(region__exact=data) 
    out = "".join(['<option value="%s">%s</option>' % (c.city,c.city) for c in CityList]) 
    return simplejson.dumps(out) 

dajaxice_functions.register(regions) 

Это работает нормально, и вызовы, с соответствующими данными, моя функция JavaScript в шаблоне нет проблемы, когда в названии региона нет каких-либо международных символов.

Скажите «Анталия», например. Однако, когда появляется такой регион, как «Мугла», он не работает. При закрытом осмотре переменные данные содержат «Mu% u011Fla», и я не могу вернуть его к тому, что, как я предполагаю, является необходимым форматом, чтобы Django мог правильно обращаться к данным модели.

Я использовал магические кавычки в верхней части страницы, я попытался использовать unescaping с помощью data.decode ('string-escape') и перетащить его между utf-8 и обратно .. но ничего не пытаюсь для работы ...

Это проблема Dajaxice, Django или python ... или я пропустил что-то действительно простое здесь?

Я был у него два дня, пытаясь понять это. Большое спасибо за любую помощь, которую вы можете предоставить.

Приветствия

+0

Правильная строка в базе данных и изменяется, когда вы извлекаете ее для рендеринга или ее в той же искаженной форме в базе данных? –

+0

Строка в базе данных в порядке. Я вытаскиваю его из базы данных с помощью представления def ... Я придерживаюсь его в выбранном выше, а затем выбираю его и вызываю onchange ... он передается через некоторый код Dajaxice в функцию в ajax.py. Я не уверен, что это искажено, поскольку оно оставляет выбор или когда. Причина, по которой он не будет соответствовать базе данных и вытащить регионы города, из-за ее искажения. – Chez

+0

Если я передаю переменную как есть в функции javascript и unescape в предупреждении, это нормально. Но я не хочу этого делать, поскольку мне нужно, чтобы это было хорошо в методе ajax.py, чтобы я мог вытащить записи базы данных ... – Chez

ответ

1

Хорошо, это исправил ...

Так что для тех, кто еще с помощью Dajaxice, и с помощью международных символов, которые вы должны изменить линию 10 в файле Dajaxice.core.js из следующих функций:

send_data.push ('argv =' + escape (JSON.stringify (argv)));

к этому:

send_data.push ('ARGV =' + encodeURIComponent (JSON.stringify (ARGV)));

и все работает хорошо.

Плющ два дня и несколько часов жизни скользнули в мутные воды кода .... ... помогите нам всем!

Смежные вопросы