2013-11-27 9 views
1

Я довольно новичок в Ajax и Django, и я пытаюсь отправить простой запрос ajax функции «update». Но я также не хочу, чтобы фактический URL-адрес менялся в браузере при отправке запроса (пример www.website.com/page/ останется неизменным даже с помощью запроса ajax). В основном, когда я пытаюсь отправить запрос ajax, я получаю ошибку 403 с сервера. Я считаю, что часть моей проблемы может быть отображение URL в urls.py ...Отправка запроса Ajax Django

Это мой запрос Ajax:

$.ajax({ 
    type : "POST", 
    url : "/page/update/", 
    data : { 
     data : somedata, 
    }, 
}).done(function(data){ 
     alert(data); 
}); 

Это мнение он должен получить:

def update(request): 
    if request.is_ajax(): 
     message = "Yes, AJAX!" 
    else: 
     message = "Not Ajax" 

    return HttpResponse(message) 

Это мои urls.py

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^update/$', views.update, name='update'), 
) 

Заранее благодарю за помощь.

Я посмотрел немного глубже в ошибку, и ошибка указывает, что при отправке сообщения мне нужно включить {% csrf_token%}. В этом примере how to get POST data in django 1.3 показано, что он помещен в форму, но мой запрос вызван только функцией щелчка

+1

так в чем проблема ? Одна вещь - ваш отступ внутри 'if request.is_ajax()' совершенно выключен – karthikr

+0

Я просто обновил вопрос, я в основном получаю ошибку 404 каждый раз, когда я пытаюсь отправить запрос – user1186173

+0

Итак, ''/page/'give вы видите «индекс»? – karthikr

ответ

0

Ваш URL-адрес в запросе ajax «/ page/update /» не соответствует URL-адресу urls.py. Вот почему вы получают страницу ошибки 404. Я покажу вам свой код строки, который вы можете попробовать.

$.ajax({ 
    type: "POST", 
    url: "/update/" 
    data: { 
     csrfmiddlewaretoken: '{{ csrf_token }}', 
     data : somedata, 
    }, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(xhr, textStatus, errorThrown) { 
     alert("Please report this error: "+errorThrown+xhr.status+xhr.responseText); 
    } 
}); 

/* '{{csrf_token}}' специально для Джанго */

Это мнения:

from django.views.decorators.csrf import csrf_exempt 
@csrf_exempt //You can use or not use choice is left to you 
def update(request): 
    if request.is_ajax(): 
     message = "Yes, AJAX!" 
    else: 
     message = "Not Ajax" 

    return HttpResponse(message) 

Это urls.py

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^update/$', views.update, name='update'), 
) 
Смежные вопросы