2010-08-25 57 views
1

我在使用Djajaxice国际字符的问题...问题和Django/Dajaxice和国际字符

我有Django模板......在模板如下选择:

<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可以正确访问模型数据。

我已经在页面顶部使用了魔术引号,我尝试过用data.decode('string-escape')和它在UTF-8和后退之间咀嚼它..但我没有尝试似乎去工作...

这是一个Dajaxice,Django或蟒蛇的问题...或者我错过了一些非常简单的东西吗?

我已经在这里两天了,试图找出这个......非常感谢您提供任何帮助,您可能能够提供。

干杯

+0

是在数据库中正确的字符串,并且在您将其提取或渲染时发生更改,或者在数据库中以相同的扭曲形式进行更改? – 2010-08-25 17:37:55

+0

数据库中的字符串正常。我通过视图def将它从数据库中提取出来......我将它粘在上面的select中,然后选择它并调用onchange ...它通过一些Dajaxice代码传递给ajax.py中的函数。我不确定这是因为它离开选择还是什么时候失真。它与数据库不匹配并拉出地区城市记录的原因是因为它的失真。 – Chez 2010-08-25 17:58:45

+0

如果我把这个变量作为javascript函数传递给它,并且在alert中忽略它,那就没问题。但我不想这样做,因为我需要它在ajax.py方法中很好,这样我就可以用它来拉取数据库记录...... – Chez 2010-08-25 18:04:27

回答

1

好了,解决了这个问题...

所以对任何人使用Dajaxice,并使用国际字符,你应该线在Dajaxice.core.js文件从以下更改10:

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

这样:

send_data.push( '的argv =' + encodeURIComponent方法(JSON.stringify(argv的)));

和一切运作良好。

P两天,几个小时的生活溜进了黑暗的代码水域...... 帮助大家!