我有一个用 Django 创建的 modelChoiceField:
lawsToValidate=forms.ModelChoiceField(queryset=LawsIdsModel.objects.filter(validated=0).values("releveAnnee", "releveMois", "noOrdre"), widget=forms.Select(attrs={'onchange': 'javascript: lawToValidateDisplay(this.value);'}))
django 代码创建了这个 html 代码:
<option value="{'releveMois': 1L, 'noOrdre': 2L, 'releveAnnee': 2009L}">{'releveMois': 1L, 'noOrdre': 2L, 'releveAnnee': 2009L}</option>
django 代码在单击下拉列表后立即调用我的 jquery 函数。如果我在我的 javascript 函数中显示选定的值,这就是我所拥有的:
{'releveMois': 1L, 'noOrdre': 3L, 'releveAnnee': 2009L}
如何从 jquery / javascript 中的这个 python 字典中获取信息。如何获得 releveMois、releveAnnee、noOrdre?如果我尝试 jQuery.parseJSON,它不起作用!
编辑: 通过下面的评论,我明白最好更改 html 输出。这是我生成下拉列表的模板代码:
<div id="lawsToValidateChoice" class="fieldWrapper">
{{ form.lawsToValidate.errors }}
<select onchange="javascript: lawToValidateDisplay(this.value);" name="lawsToValidate" id="id_lawsToValidate">
<option value="" selected="selected">Select a law to validate</option>
{% for law in form.lawsToValidate.field.queryset %}
<option value="{{ law.releveAnnee }},{{ law.releveMois }},{{ law.noOrdre }}">releveAnnee={{ law.releveAnnee }}, releveMois={{ law.releveMois }}, noOrdre={{ law.noOrdre }}</option>
{% endfor %}
</select>
</div>
解析值不再有问题!解决了!