1

我有一个从数据库生成的表单。在数据库中,我有诸如“Española”之类的字符串,它将成为下拉菜单中的选项。

我的 html 看起来像这样的那一刻:

<option value="Española">Española</option>

我将这些值用于我需要从中发送 AJAX 请求的表单的动态部分。

我可以看到,在使用 IE 时,标题是这样的:

GET /collections/find_island?island_group=Espa�ola HTTP/1.1" 500 63206

什么时候应该:

GET /collections/find_island/?island_group=Espa%C3%B1ola HTTP/1.1" 200 164

由其他浏览器生成。

有什么方法可以在我的模板中得到这个输出:

<option value="Espa%C3%B1ola">Española</option>

非常感谢任何帮助。

编辑:

我的表格:

def form(forms.Form):
    ...
    island_group = forms.ModelChoiceField(
    required=False,
    label=ugettext_lazy('Island Group'), 
    initial=None,
    queryset=Localityonline.objects.values_list('islandgroup', flat=True).distinct('islandgroup').order_by('islandgroup'), 
    empty_label=ugettext_lazy("Not Specified"), 
    widget=forms.Select(attrs={"class":'searchfield', "onChange":'getIslandName()'})
)

的JavaScript:

function getIslandName(lang) {
var islandGroup = document.getElementById("id_island_group").value;

if (islandGroup == '') {
    // if Not Specified re-selected then set data to null and bypass updatePage()
    var data = null; 
    update_select($('select[name=island_name]'), data);
} 
else {
    var url = "../collections/find_island?island_group=" + islandGroup;
    request.open("GET", url, true);
    request.onreadystatechange = updatePage;
    request.send(null);
    }    
}
4

1 回答 1

1

您可以调用encodeURIjavascipt 以提供您正在寻找的编码值。也许 Mozilla 和 chrome 会自动完成,而 IE 不会?

encodeURI('Española')
// "Espa%C3%B1ola"

var url = "../collections/find_island?island_group=" + encodeURI(islandGroup);

或编码整个网址我不知道哪个更有意义......

在 JavaScript 中编码 URL?

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI

于 2012-05-22T16:52:34.360 回答