Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django:将值传递给函数Jquery/Ajax时没有HttpResponse_Javascript_Jquery_Python_Ajax_Django - Fatal编程技术网

Javascript Django:将值传递给函数Jquery/Ajax时没有HttpResponse

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'

目前我有两个按钮,一个用于定义活动类别的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']


            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