Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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
window.location.href时无法从javascript获取post值_Javascript_Django_Post - Fatal编程技术网

window.location.href时无法从javascript获取post值

window.location.href时无法从javascript获取post值,javascript,django,post,Javascript,Django,Post,在使用函数reload_books转到新页面{%url org_select_book_list%}之前,我需要发布一些值,并将数据存储在{%url org_store_select_book_list%}中 但我无法接收数据 但当我评论这些书时;,我能收到。为什么? 在这里我添加了视图,我不知道它是否有效。注:HttpResponse仅用于测试目的 function reload_books() { var new_url = '{% url org_select_book

在使用函数reload_books转到新页面{%url org_select_book_list%}之前,我需要发布一些值,并将数据存储在{%url org_store_select_book_list%}中

但我无法接收数据

但当我评论这些书时;,我能收到。为什么?

在这里我添加了视图,我不知道它是否有效。注:HttpResponse仅用于测试目的

function reload_books() {  
        var new_url = '{% url org_select_book_list %}?type=' + type  
                + '&order_by=' + order_by + '&page=' + page  
                + '&per_page=' + per_page + '&q=' + q;  
        for (var i = 0; i < search_param_stack.length; i ++) {  
            new_url += '&' + search_param_stack[i] + '=' + eval(search_param_stack[i]);  
        }  

        window.location.href = new_url;
    }


function change_page(new_page) {
        if (new_page < 1) {
          strong textpage = 1;
        } else if (new_page > {{ book_list.paginator.num_pages }}) {
            page = {{ book_list.paginator.num_pages }};
        } else {
            page = new_page;
        }

        var form = document.createElement("form");
        form.innerHTML = "{% csrf_token %}";
        form.setAttribute("method", "POST");
        form.setAttribute("action", "{% url org_store_select_book_list %}");
        form.setAttribute("enctype", "multipart/form-data");
        //form.setAttribute("Content-Type", "application/x-www-urlencoded");

        var page_from = document.createElement("input");
        page_from.setAttribute("type", "hidden");
        page_from.setAttribute("name", "page_from");
        page_from.setAttribute("value", "{{ book_list.number }}");
        form.appendChild(page_from);

        var bookId = document.getElementsByClassName("batch_cb");
        var page_length = {{ book_list.end_index }} - {{ book_list.start_index }};
        for(var i = 0; i < page_length; i++) {
            var YAhiddenField = document.createElement("input");
            YAhiddenField.setAttribute("type", "hidden");
            YAhiddenField.setAttribute("name", "bookId[" + i + "]");
            if(bookId[i].checked == true) {
                YAhiddenField.setAttribute("value", bookId[i].getAttribute("value"));
            }
            form.appendChild(YAhiddenField);
        }

        document.body.appendChild(form);
        form.submit();
        document.body.removeChild(form);

        reload_books();
        return false;
    }


views.py
@user_type_required(['organizationuser'])
def org_store_select_book_list(request):
    """
    when select a list of books from one page,
    the session will store the books' id from that page
    """

    # initialize the session
    request.session.select_books = []
    # if pass the books' id to this page
    if request.POST:
        # if books' id not in the id list
        for i in request.POST:
            if i.startswith("bookId"):
                if request.POST[i] not in booksId:
                # the list append the book's id
                    booksId.append(request.POST[i])
        # delete the data of the session
        del request.session.select_books
        # store the list to the session
        request.session.select_books = booksId

        from django.http import HttpResponse
        return HttpResponse(booksId)
你应该这样做

if request.method == 'POST':
而不是

if request.POST:

单靠JavaScript无法获取POST数据。也许你们应该尝试使用这个方法,而不是GET?我试过了,但也没用。如果我得到了数据,我会对测试做出HttpResponse响应,但它没有。它只是重新加载页面。你能在视图的末尾而不是在JS中重定向吗?嗨,我刚刚添加了视图。我是个新手,我不知道这是否管用。非常感谢。