次のように、post ajax呼び出しで相対URLを使用しようとしています:
現在の URL パス:
http://localhost:8000/customer/0/location/0/user/0/
別のディレクトリに変更する必要があります。
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;
});
私のget呼び出しでは、絶対URLと相対URLの両方でデータが返されます。
しかし、POST 呼び出しの場合、相対 URL を使用すると、内部サーバー エラーが発生します (絶対 URL は正常に動作します)。私の見解では、テスト目的で @csrf_exempt も含めているため、CSRF とは関係ないと思います。(リクエストにhttps://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajaxを含めました)
Chrome デバッガーは、相対 URL を使用した post 呼び出しで次のエラー メッセージを表示します。
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 呼び出しで相対 URL パスが失敗する理由について、何らかの提案がありますか? 前もって感謝します..