Сейчас я просто проверяю, как это работает, поэтому использую тривиальный пример. У меня есть переменная с именем text
в js. Хочу отправить его на просмотр, сделать с ним какие-то манипуляции и вернуть в js. Мне удалось отправить text
через запрос POST ajax, но у меня возникли проблемы с пониманием того, как я могу вернуть обновленное значение. Вот мой сценарий
function ajaxTest(){
var text = "text to send";
$.ajax({
url:'test/',
type:'POST',
data:{text : text, csrfmiddlewaretoken: '{{ csrf_token }}'},
success:function () {
console.info("Ajax test success")
},
error:function () {
console.info("Ajax test failure")
}
})
}
Мои шаблоны URL:
from .views import *
urlpatterns=[
path('test/', testingAjax),
]
И у меня есть представление, что получить этот текст
def testingAjax(request):
if request.method == 'POST':
x = request.POST.get('text')
textToReturn = x + " text to return"
return HttpResponse #And here trouble begins
elif request.method == 'GET':
status = "Nuh uh"
return HttpResponse(status)
Что я должен вставить HttpResponse
и как я могу теперь поймать эти данные в javascript (например, для журнала консоли)?
Вы должны иметь возможность просто вернуть HttpResponse(textToReturn).
Однако вы, вероятно, захотите изучить JsonResponse и вернуть структуру данных для вашего javascript, чтобы что-то с ней сделать.
from django.http import JsonResponse, HttpResponse
def testingAjax(request):
if request.method == 'POST':
x = request.POST.get('text')
textToReturn = x + " text to return"
return JsonResponse({'result':textToReturn,})
elif request.method == 'GET':
status = "Nuh uh"
return HttpResponse(status)
Для javascript для регистрации данных, которые возвращаются в вашем первом примере, будет выглядеть так:
function ajaxTest(){
var text = "text to send";
$.ajax({
url:'test/',
type:'POST',
data:{text : text, csrfmiddlewaretoken: '{{ csrf_token }}'},
success:function (data) {
console.info("Ajax test success");
console.info(data);
},
error:function () {
console.info("Ajax test failure")
}
})
}
да. Некоторые другие параметры тайм-аута и завершения находятся в документации jQuery Ajax: api.jquery.com/jquery.ajax
Спасибо! Но что произойдет, если запрос из представления займет некоторое время? Будет ли функция js просто «ждать» ответа или она вернет что-то вроде Null?