我想在不刷新页面的情况下显示所选汽车的范围。这段代码没有给出错误,但也没有做到这一点。
的index.html
<select class="custom-select d-block w-100" name="car" id="car" onchange="display(this.value)">
{% for car in cars_list%}
<option value="{{ car }}">{{ car }}</option>
{% endfor %}
</select>
main.js
function display(value){
$.ajax({
type: "POST",
url: "/get_car_data/",
data: { car_model: value}
}).done(function(range) {
alert("test")
$("#range").html(range);
});
}
ajax_handler.py
def get_car_data(car_model):
cars_frame = pd.read_csv("C:/Users/David/Desktop/cars.csv", sep=';')
frame2 = cars_frame.set_index('Car', drop=True)
car_range = (frame2.loc[car_model]['Range'])
return car_range
urls.py
urlpatterns = [
url(r'^get_car_data/', ajax_handler.get_car_data, name='get_car_data'),]
答案 0 :(得分:0)
我在这里看到的一个大问题,除非我不知情的代码,是你的观点(因为它丢失所有缩进而很难阅读)缺少两件事:
1)通过邮寄接受参数的任何方式。您期望视图的正常签名是:
def get_car_data(request, car_model):
```your code here```
在这种情况下,汽车模型将是url本身的一部分,而不是post请求,你只需要使用相应的模型名称进行AJAX访问url(或者假设名称可能有奇怪的字符,也许通过主键查找)。您还可以使用request.POST
作为字典获取POST值,在这种情况下省略参数car_model
并将其从POST字典中取出。
2)任何序列化它的方法都会导致返回的HTTP响应。如果您正在考虑使用HTML,那么这可能就像HttpResponse
对象一样简单,该对象使用render
返回包含信息的字符串甚至是模板。但你需要一些东西。