Javascript Django:将值传递给函数Jquery/Ajax时没有HttpResponse
目前我有两个按钮,一个用于定义活动类别的api搜索,另一个用于定义餐厅类别,我希望将数据发布到我的views.py文件夹并获得响应。My函数位于My views.py文件夹中,看起来像这样Javascript Django:将值传递给函数Jquery/Ajax时没有HttpResponse,javascript,jquery,python,ajax,django,Javascript,Jquery,Python,Ajax,Django,目前我有两个按钮,一个用于定义活动类别的api搜索,另一个用于定义餐厅类别,我希望将数据发布到我的views.py文件夹并获得响应。My函数位于My views.py文件夹中,看起来像这样 @csrf_exempt def json_request(request): if request.method == 'GET': if 'category' in request.GET: category = request.GET['category'
@csrf_exempt
def json_request(request):
if request.method == 'GET':
if 'category' in request.GET:
category = request.GET['category']
return HttpResponse('category')
return HttpResponse('failed')
这是为了测试变量“category”是否被发送。我的onclick交互如下所示:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
var URL = "{% url 'test' %}";
</script>
<script>
function updateCategory(){
var data = {'category': category}
$.get(URL, data, function(response){
if(response === 'success'){ alert('Yay!'); }
else{ alert('Error! :('); }
});
}
$(document).ready(function(){
$('#btnRestaurant').click(function(){
category = "restuarant";
updateCategory();
});
$('#btnActive').click(function(){
category = "active";
updateCategory();
});
});
</script>
<button name ="category" type="button" class="btn btn-default" id=btnRestaurant onclick=" updateCategory()">Food</button>
<button name="categoryA" type="button" class="btn btn-default" id=btnActive onclick="updateCategory()">Activites</button>
我完全不知所措,我觉得有人会马上指出问题,但我真的需要一只手来找出到底出了什么问题。你没有阻止按钮的默认操作,即在没有Javascript的情况下提交页面。因此,您的Ajax启动了,但是正常的浏览器提交发生了。而这似乎是一篇文章,你的观点不支持
确保您的
单击
函数接受事件
参数,并调用事件.preventDefault()代码>默认按钮类型为submit
所以。尝试添加type=“button”
注意csrf\u令牌
是必须的。它只是为了现在就退出它。另外,确保您的视图正确地处理GET请求-至少在您要提交没有java脚本的页面时返回405(使用httpresponsenoallowed
),你的意思是我只需要在顶部声明它吗?我已经根据yoru的建议修改了代码,现在得到了一个HttpResponse,但失败了:/刚刚添加了它,但仍然没有http响应:(现在是警报“耶”?我排序它需要一个GET而不是POST,但它失败了:/What means failed?、错误代码,一件事,您没有发送CSRF令牌。请尝试使用@CSRF\u export
\GET已发送,但返回了我的用户输入的HttpResponse('failed')
url(r"^loc_search/", 'project_name.views.json_request', name="test"),
<button type="button" class="btn btn-default" id=btnRestaurant onclick="updateCategory()">Food</button>
<button type="button" class="btn btn-default" id=btnActive onclick="updateCategory()">Activites</button>
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def json_request(request):
if request.method == 'POST':
if 'category' in request.POST:
# your code