我正在Django / python中构建一个网站,在这个特定的页面上,视图返回一组对象。然后,模板为每个对象生成一个表单,并使用AJAX提交表单。
一切正常,因为我想要它没有错误,但问题是视图中的对象越多,AJAX的工作速度就越慢。对于大约100个对象,每个对象需要2到3秒,其中大约有10个对象,只需不到一秒钟。
最初我试着评论提交时发生的很多事情,但它根本没有提高速度!
我不确定如何在不改变代码组织方式的情况下加快速度,我希望远离它,这是我真正喜欢的功能!
我一直在搜索,但所有答案都说这是表单的提交需要很长时间,而这对我的代码速度没有任何影响。
interact.html
{% for adopt in adopts %}
<form class="interact-form">
<!-- some fields -->
</form>
{% endfor %}
<script type="text/javascript">
$(document).ready(function(){
$(".interact-form").submit(function(){
event.preventDefault();
$.ajax({
url: '{% url 'interact' %}',
type: 'POST',
data: $(this).serialize(),
context: this,
success: function(data) {
$(this).css("opacity", "0.3");
$(this).css("cursor", "not-allowed");
}
});
});
});
我是Django的新手,对AJAX很新,非常感谢一些帮助。代码非常简单,但如果有帮助的话,这里(简化)。
答案 0 :(得分:0)
我认为这是因为您将this
变量传递给已经有很大内容的ajax context
。所以我认为这会减慢你的ajax,而且,收到的数据类型在速度的情况下也起着重要作用(特别是html数据)。如果我是你,我只想通过使用JSON
来接受来自ajax网址的dataType: 'json'
- 这是您可以使用ajax播放的最快的数据类型。
$(".interact-form").submit(function(){
event.preventDefault();
var $this = $(this);
$.ajax({
url: '{% url 'interact' %}',
type: 'POST',
data: $(this).serialize(),
dataType: 'json',
success: function(data) {
// we are now expecting that `data` is a valid JSON object
$this.css("opacity", "0.3");
$this.css("cursor", "not-allowed");
}
});
});