Отправить данные из JavaScript для просмотра и возврата измененных данных - PullRequest
0 голосов
/ 27 мая 2019

Сейчас я просто проверяю, как это работает, поэтому использую тривиальный пример. У меня есть переменная с именем text в js. Я хочу отправить его для просмотра, сделать некоторые манипуляции с ним и вернуть его в js. Мне удалось отправить text через ajax-запрос POST, но у меня возникли проблемы с пониманием того, как я могу вернуть обновленное значение. Вот мой сценарий

    function ajaxTest(){
        var text = "text to send";
        $.ajax({
            url:'test/',
            type:'POST',
            data:{text : text, csrfmiddlewaretoken: '{{ csrf_token }}'},
            success:function () {
                console.log("Ajax test success")
            },

            error:function () {
                console.log("Ajax test failure")
            }
        })
    }

Мои urlpatterns:

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 (например, для консольного журнала)?

1 Ответ

0 голосов
/ 27 мая 2019

У вас должна быть возможность просто вернуть 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.log("Ajax test success");
            console.log(data);
        },

        error:function () {
            console.log("Ajax test failure")
        }
    })
} 
...