所以我有以下带有ajax请求的html:
<script>
$("#search_button").on("click", function(){
var start_date = $("input[name=\"startdate\"]").val();
var end_date = $("input[name=\"enddate\"]").val();
var machine_id = $("#machine_id").val();
// console.log(start_date);
// console.log(end_date);
// console.log(machine_id);
$.ajax({
url: ('/reports/machine_search'),
type: 'POST',
data: {'start_date': start_date, 'end_date': end_date, 'machine_id': machine_id},
success: function(data) {
console.log(data);
}
});
})
</script>
这是我的url.py文件,其中包含相应的网址&#39; / reports / machine_search&#39;:
from django.conf.urls import url
from . import views
from django.views.decorators.csrf import csrf_exempt
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^dashboard', views.dashboard, name='dashboard'),
url(r'^login', views.login, name='login'),
url(r'reports', views.reports, name='reports'),
url(r'^logout/$', views.logout_view, name='logout'),
url(r'^reports/machine_search', csrf_exempt(views.machine_search), name='machine_search'),
url(r'^test', views.my_view)
]
然后是相应的视图文件:
@login_required
@csrf_exempt
def machine_search(request):
test = request.data['start_date']
print(test)
run_response = {'test1': 'placeholder1',
'test2': 'placeholder2'}
return JsonResponse(run_response)
我的问题是,暂时我只想让ajax请求返回在我的views函数中创建的字典。但是,在我的ajax成功线上,我在console.log响应,在我的控制台中,我收到了当前页面的整个html,我正在制作我的ajax请求。我错在哪里或哪里?我只是希望我的请求从views函数返回一个字典,并能够在我的HTML中访问它。在此先感谢,如果我能澄清任何事情,请告诉我。
答案 0 :(得分:0)
我相信会发生的事情是你的ajax调用的reports/machine_search
网址会触发你的urls.py中的reports
网址,这可能就是你所在的页面,所以你得到了所有那个HTML。
一种解决方案是在报告末尾添加$
,以便它只匹配reports
而不是reports/machine_search
url(r'reports$', views.reports, name='reports'),
另一种方法是将reports/machine_search
置于reports
之上。