Django:为什么我的jQuery POST url在点击服务器时会发生变化?

时间:2015-05-06 12:15:19

标签: jquery ajax django

我有一个脚本运行以下post到Django后端:

$(document).ready(function(){                                                       
    $('.arrow-up, .arrow-down').click(function() {                                  
        var myElement = $(this);                                                    
        var url = myElement.data('url');                                            
        myElement.addClass('hidden');                                               
        var spinner = myElement.siblings('.spinning');                              
        spinner.removeClass('hidden');                                              
        debugger;                                                                   
        $.post({                                                                    
            url: url,                                                               
            // TODO: implement this better.                                         
            data: {vote: 'test'},                                                   
            dataType: 'json',                                                       
            success: function() {                                                   
                myElement.toggleClass('arrow-selected');                            
                spinner.addClass('hidden');                                         
                myElement.removeClass('hidden');                                    
            },                                                                      
            error: function() {                                                     
                spinner.addClass('hidden');                                         
                myElement.removeClass('hidden');                                    
                // TODO: make this link to the signup modal.                        
                alert('You must be logged in to vote');                             
            }                                                                       
        });                                                                         
    });                                                                             
});   

当我在debugger;语句处检查控制台时,url参数为"http://localhost:8000/item/6/1/"

但是,当POST到达我的django服务器时,它会将404返回到其他网址,当前location附加[object%20Object]

"POST /lists/4/[object%20Object] HTTP/1.1" 404 2677

为什么会发生这种情况,如何才能对所需的网址进行ajax调用?

2 个答案:

答案 0 :(得分:2)

您将网址作为表单数据的一部分发送。我相信它应该是:

$.post(url, {vote:'test'})

实际上,您使用的整个格式对于$ .ajax更好,所以也许将该帖子更改为ajax并添加类型可能更好:'POST'如

    $.ajax({                                                                    
        url: url,
        type: 'POST',                                                              
        // TODO: implement this better.                                         
        data: {vote: 'test'},                                                   
        dataType: 'json',                                                       
        success: function() {                                                   
            myElement.toggleClass('arrow-selected');                            
            spinner.addClass('hidden');                                         
            myElement.removeClass('hidden');                                    
        },                                                                      
        error: function() {                                                     
            spinner.addClass('hidden');                                         
            myElement.removeClass('hidden');                                    
            // TODO: make this link to the signup modal.                        
            alert('You must be logged in to vote');                             
        }                                                                       
    });      

答案 1 :(得分:0)

您正在更新代码中的网址

检查行------------------------------------------- | LEFT | MID | RIGHT | ------------------------------------------- AUTO-WIDTH 80px AUTO-WIDTH