我试图用AJAX在页面上执行查询。后端正在使用Django。我的javascript就像这样:
$(function(){
$("#form").submit(function(event){
event.preventDefault();
var query = ($("#input-field").val());
$.ajax({
type: "GET",
url:"{% url 'search_building' %}",
data: {
'csrfmiddlewaretoken': '{{ csrf_token }}',
'q': query
},
success: function(data) {
$("#search-results").html(data);
}
});
});
});
整个页面都会出现并附加#search-results,因为我只希望从表格中获得结果。
我对使用Ajax是否应该使用GET或POST以及是否应该使用csrf令牌感到有点困惑。
非常感谢。
我明白了!
我的原始网页使用了一个视图,一个网址和一个返回查询所有结果的模板
我想使用Django的模板语言,所以我不希望输出在json中,然后编写javascript来处理输出。
所以我创建了第二个模板来渲染我的结果,一个处理查询的视图,然后使用ajax处理将查询发送到新视图并将结果从新模板渲染到旧模板。
答案 0 :(得分:0)
尝试以json格式从后端返回响应。 这样可以很容易地使用响应数据,您可以随意使用它。
整页加载背后的原因是因为您正在使用上下文渲染模板。
对于ajax请求,json格式的响应更适合数据处理。
此外,如果您希望写入数据库,例如新实例,请使用POST请求。 相反,您需要的是为某些查询调用api,或者您希望api提供数据的情况,您可以使用GET请求。
这是我所学到的所有版本。 希望你得到你所要求的。!