2012-06-22 6 views
0

Я пытаюсь использовать относительный URL с помощью Ajax вызова пост следующим образом:Джанго: относительный URL не работает с почтовыми звонков в 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; 
      }); 

Для моих вызовов как абсолютный, так и относительный URL-адреса возвращаются данные.

Но для вызова POST, когда я использую относительный URL-адрес, я получаю внутреннюю ошибку сервера. (Абсолютный URL-адрес работает нормально) Я не думаю, что это связано с CSRF, поскольку, на мой взгляд, у меня также есть @csrf_exempt для целей тестирования. (я включил https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax по запросу)

Хром-отладчик дает мне следующее сообщение об ошибке при почтовом вызове с относительным 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) 

Любое тело имеет какое-либо предложение, как и почему относительный путь URL не будет работать на вызов POST? Заранее спасибо ..

ответ

1

В разделе «Сеть Chrome» вы можете просмотреть объяснение ошибки, если у вас есть DEBUG=True.

Поскольку у вас нет косой черты в конце var relative= "../../line_group/addLine/1", может случиться так, что CommonMiddleware перенаправляет ваш запрос. Установите APPEND_SLASH = False в настройках проекта, если вы хотите сохранить свой URL как есть.

+0

Спасибо за быстрый ответ. Ошибка/вызвала ошибку. Но мне любопытно, почему запрос Get работал нормально? – akotian

+1

Переменные POST нельзя перенаправить на другую страницу. –

+0

Спасибо за ваш ответ! – akotian

Смежные вопросы