Ajax返回整页而不是返回Input的Value。带有Django的Ajax不能正常运行。它必须是一页的Web应用程序。我试图将Calc的模板制作为单独的页面,但也无法正常工作。
Urls.py
urlpatterns = [
url(r'', views.main, name = 'main'),
url(r'calc/$', views.calc, name = 'calc')
]
Views.py
def main(request):
return render(request, 'main/index.html',
context = {
'some': some
}
)
def calc(request):
if request.GET:
outputdata = request.GET('somedata')
return HttpResponse(outputdata)
index.html
...
<div>
<form action="{% url 'calc' %}" method="GET">
{% csrf_token %}
<input type="text" id="someinput" value="somevalue">
</form>
<button type="submit" id="somebutton">Button</button>
</div>
...
script.js
$(document).ready(function() {
$('#somebutton').on('click', function(event) {
$.ajax({
type: 'GET',
url: 'calc',
data: {
'somedata': $('#someinput').val()
},
success: function(data) {
alert(data);
}
});
});
});
警告
感谢所有答复。
解决方案是使用路径而不是url。
path('', views.main, name = 'main'),
path('calc/', views.calc, name = 'calc')
然后编写outputdata = request.GET.get('somedata')而不是outputdata = request.GET('somedata')。
答案 0 :(得分:1)
问题可能是您的主要URL模式匹配所有内容。因此,当您发出Ajax请求时,该请求由返回整页的视图而不是返回单个值的视图提供。
确保使用开始和结束锚点:
url(r'^$', views.main, name = 'main'),
url(r'^calc/$', views.calc, name = 'calc')
或使用新的路径语法:
path('', views.main, name = 'main'),
path('calc/', views.calc, name = 'calc')
答案 1 :(得分:0)
您使用return
\Auth::logout();
$request->session()->invalidate();
但是您需要使用
HttpResponse(outputdata)
因此导入JsonResponse并将HttpResponse更改为JsonResponse
from django.http import JsonResponse
return JsonResponse({"foo":"bar")