Django:相对url不适用于ajax中的post调用

我正在尝试使用post ajax调用相对url,如下所示:

当前网址路径:

http://localhost:8000/customer/0/location/0/user/0/

我需要改变为不同的directoy。

var absolute = "http://localhost:8000/customer/0/location/0/line_group/addLine/2/";//+phone_id;
var relative= "../../line_group/addLine/1"

            $.get(relative,function(data){
            //this works     
            alert(data);
            });

            $.ajax({
            type: "POST",
            url: relative,
            data: "test=test1",
            error:function(data){
            //throws error when using relative path  
            alert('error');
            },
            success:function(data){
            // works fine when using absolute path 
            alert('success');
            }
            });
            //same thing using just post        
            $.post(relative,test,function(data){
            //Error on relative path
            alert(data);
            return false;
            });

对于我的调用,绝对和相对的网址,返回数据。

但是对于POST调用,当我使用相对URL时,我得到了内部服务器错误(绝对URL工作正常)。我认为这与CSRF没有关系,因为在我看来,我还包含@csrf_exempt用于测试目的。 (我在请求中包含了https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax)

Chrome调试器在使用相对URL进行邮政调用时给了我以下错误消息。

Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR) http://localhost:8000/customer/0/location/0/line_group/addLine/1

但是,正如你所看到的,它确实为我提供了完整的url链接,我想访问它。 当我直接点击链接时,我会得到页面的数据。

该视图非常简单:

@csrf_exempt
def addNewLine(request, customer_id, location_id, phone_id,**kwargs):
      error_msg = u"No POST data sent."            
      context = {}
      return render_to_response('line_group/mytest.html', context)

任何机构都有任何建议,至于为什么相对路径在POST调用失败? 提前致谢..


在Chrome网络版块中,如果您有DEBUG=True则可以预览错误说明。

由于var relative= "../../line_group/addLine/1"末尾没有斜线,因此var relative= "../../line_group/addLine/1"可能会重定向您的请求。 如果您想保留APPEND_SLASH = False网址,请在项目设置中设置APPEND_SLASH = False

链接地址: http://www.djcxy.com/p/64655.html

上一篇: Django: relative url not working with post calls in ajax

下一篇: To hashbang or not to hashbang?