【发布时间】:2016-04-29 09:51:14
【问题描述】:
我对 django 和 AJAX 非常陌生,我正在尝试使用下拉菜单中的数据填充 HTML 元素(暂时是跨度)。
我目前的方法是通过 <option> 元素中的 id 标签获取行的唯一 ID,并使用 AJAX 将其发布到 views.py,然后在 Django 中将该 ID 用作过滤器以获取相应的行.但是,由于某种原因,每当我尝试过滤查询时,都不会返回任何内容。每当我删除过滤器时,所有的值都会被解析,这让我觉得我在某种程度上弄错了过滤器。我尝试了许多不同的过滤器类型,但我似乎无法做到正确。
HTML 是:
<select id="drugSet">
{% for dose in dose_set %}
<option id="{{ dose.pubmed_id }}">{{ dose.drug_name }}</option>
{% endfor %}
</select>
<span id="drugName"></span>
<a href="javascript:NeedDrugInformation()">Retrieve data</a>
Javascript 和 AJAX 是:
function NeedDrugInformation() {
var elementID = document.getElementById("drugSet");
var drugID = String(elementID.options[elementID.selectedIndex].id);
$.ajax({
type: "POST",
url: "drugsanddoses/",
dataType: "json",
async: true,
data: { csrfmiddlewaretoken: '{{ csrf_token }}', drugID: drugID },
success : function(json) {
},
error : function(xhr,errmsg,err) {
}
});
$.ajax({
type: "GET",
url: "drugsanddoses",
dataType: "json",
async: true,
data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
success: function (json) {
$('#drugName').html(json.drugInfo);
// $('.ajaxProgress').hide();
}
})
}
Views.py:
def drugsanddoses(request):
drugID = request.POST.get('drugID')
drugInfo = RiskCalculator.objects.filter(pubmed_id='drugID').values('drug_name', 'l_dose', 'h_dose', 'risk', 'pubmed_id', 'updated')
response_data = {}
try:
response_data['drugInfo'] = str(drugInfo)
except:
response_data['result'] = 'No details found'
response_data['message'] = 'There is currently no information in the database for this drug.'
return HttpResponse(json.dumps(response_data), content_type="application/json")
正如我所说,我对此很陌生。任何我可以做得更好的指针或方法将不胜感激。
【问题讨论】:
标签: javascript ajax django django-views