【问题标题】:Send data from javascript to view and return modified data从 javascript 发送数据以查看和返回修改后的数据
【发布时间】:2019-05-27 14:02:31
【问题描述】:

现在我只是在测试它是如何工作的,所以我使用了一个简单的例子。我在 js 中有一个名为 text 的变量。我想将它发送给查看,对其进行一些操作并将其返回给 js。我设法通过 ajax POST 请求发送text,但我无法理解如何返回更新后的值。这是我的脚本

    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")
            }
        })
    }

我的网址模式:

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 中捕获这些数据(例如用于控制台日志)?

【问题讨论】:

    标签: javascript django django-views


    【解决方案1】:

    您应该能够简单地返回 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")
            }
        })
    } 
    

    【讨论】:

    • 谢谢!但是如果来自视图的请求需要一些时间会发生什么? js 函数会只是“等待”答案还是会返回 Null 之类的东西?
    • 是的。 jQuery Ajax 文档中有一些关于超时和完成的其他选项:api.jquery.com/jquery.ajax
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多