这是我第一次使用AJAX,我不明白为什么我需要在JS Ajax调用中指定url参数。
{% block javascript %}
<script>
$("#id_username").change(function () {
$.ajax({
url: '/some_new_url/',
data: {
'something': ...
},
success: function (data) {
if (data.is_taken) {
alert("Data is already in DB");
}
}
});
});
</script>
{% endblock %}
据我了解,AJAX用于在服务器端执行某些操作而无需刷新页面。因此,在将数据发送到服务器后,它不应重定向到新的url
,并保持在相同的url上。但是AJAX调用需要url
参数。
我真的不喜欢这样,因为设置新的url
意味着我必须在 app / urls.py 中添加另一个url
模式。
re_path(r'^create/$', views.Some_View.as_view(), name='create'),
因此,请在我的 views.py
中再创建一个view
class Some_View(ListView):
model = SomeModel
fields = '__all__'
但是,我已经有一个CBV
,它可以在用户端生成表单字段并接受用户输入。我只想使现有的CBV
使用AJAX调用将数据保存到DB。
由于我不了解url的用途,所以我不知道如何设置新的url模式和CBV
。我可以在这里得到一些解释吗?
++这只是一个额外的问题,但我的最终目标是生成多个表单字段和多个Submit
按钮,这些按钮使用AJAX将各自的表单输入数据发送到服务器。如果对如何调整AJAX代码有任何建议,我将不胜感激。
答案 0 :(得分:1)
AJAX请求只是对服务器上URL的常规HTTP请求。 AJAX请求与普通浏览器GET或POST发出的请求之间的唯一区别是,使用AJAX,从服务器返回的结果将返回到javascript函数,然后您可以决定如何处理这些结果。
因此没有任何自动更新。
如果要在服务器上保存某些内容,则需要在服务器上有一个视图,该视图能够理解您在AJAX请求中发送的数据,将其保存,然后发送回一个响应,再次,您的javascript代码需要能够理解。
但是,如果您已经具有能够执行所需功能的视图,则可以将其用于AJAX请求,只需发送一个包含视图所需内容的请求。