我有一个视图,可以通过AJAX从前端获取参数。
我已经通过方式传递了AJAX参数,但是这次我的方法没有用。
我已经向朋友寻求帮助,他给我发送了另一种发送AJAX数据的方式。在我未经训练的眼睛中,它们两者都一样工作。所以我不知道为什么我的不起作用:
为什么?
我朋友的AJAX:
<script>
$("#id_shipping_province").change(function () {
var val_d = $("#id_shipping_department").val()
var val_p = $("#id_shipping_province").val()
$.ajax({
url: "/district/?d_name=" + val_d + "&p_name=" + val_p
}).done(function (result) {
$("#id_shipping_district").html(result);
});
});
</script>
我的AJAX :
<script>
$("#id_shipping_province").change(function () {
var val_d = $("#id_shipping_department").val()
var val_p = $("#id_shipping_province").val()
$.ajax({
url: "/district/",
d_name: val_d,
p_name: val_p
}).done(function (result) {
$("#id_shipping_district").html(result);
});
});
});
</script>
查看
def get_district(request):
d_name = request.GET.get("d_name")
p_name = request.GET.get("p_name")
data = Peru.objects.filter(departamento=d_name, provincia=p_name).values_list("distrito", flat=True)
# data = Peru.objects.filter(provincia=p_name).values_list("provincia", flat=True)
return render(request, "accounts/district_dropdown.html", {
"districts": set(list(data))
})
答案 0 :(得分:1)
您需要在d_name
指定的单独对象中传递p_name
和data
属性。当前,您将它们作为ajax设置对象的顶级属性传递,不会起作用。
var val_d = $("#id_shipping_department").val()
var val_p = $("#id_shipping_province").val()
$.ajax({
url: "/district/",
data: { // Pass parameters in separate object
d_name: val_d,
p_name: val_p
},
}).done(function (result) {
$("#id_shipping_district").html(result);
});
data
对象将转换为查询字符串并附加到URL。
对于您朋友而言,他们在创建URL时会手动建立查询字符串-因此它们的版本有效。