而不是通过ajax post data来访问django视图

not going through the django view through ajax post data

本文关键字:data 访问 django 视图 post ajax      更新时间:2023-09-26

我正在通过ajax进行登录。Jquery函数工作良好,但它不去ajax url。所以django视图不会被执行。

ajax。

$(function()
                {
                localStorage['domain'] = "http://122.172.64.142";
                var domain = localStorage['domain'];
                $('#fac1').on('click', function () {
                        var username = $("#username").val();
                        var password = $("#pwd").val();
                        data = {
                            name: username,
                            password: password
                            };
                        alert(domain);
                        $.ajax({
                            url: domain + "/login/login_android_here/",
                            type: "POST",
                            data: data,
                            success: function (response) {
                                                alert("success");
                                                window.location = 'file:///android_asset/www/posts.html';
                                                    },
                                        error: function () {
                                            alert('some error in login');
                                        }
                            });
                                return false;
                            });
                    });

My django views.py

@csrf_exempt
def login_android(request):
    print "i am in view"
    if request.method == "POST":
        print "you are in method"
        username = request.POST['name']
        password = request.POST['password']        
        login_api(request,username,password)
        #return HttpResponseRedirect('/home/')
        messages.success(request, 'You Loged In Successfully')
        response = json.dumps(username)
        return HttpResponse(response, mimetype="application/json")

当我点击登录按钮,我得到警报,但它没有进入视图。Url正确

我首先建议在开发者工具控制台打开的情况下使用Chrome。您可以更改console.log()的警报。

当您尝试window.location = 'file:///android_asset/www/posts.html';时您正在尝试访问本地资源。如果我在我的Chrome开发者工具中发布,我就会回来Not allowed to load local resource: file:///android_asset/www/posts.html

如果您使用window.location.replace("a url to your view");,这将像HTTP重定向一样工作。有关更多信息,请重定向页面

,你应该可以看到你的视图

我犯了一个愚蠢的错误。我在这个页面上提供了一个错误的域名地址。现在它工作了。

localStorage['domain'] = "http://122.172.64.142";

地址错误。

您忘记了dataType ajax参数

$.ajax({
    url: domain + "/login/login_android_here/",
    type: "POST",
    data: data,
    dataType : 'json', //dataType param IS MISSING
    success: function (response) {
                alert("success");
                window.location = 'file:///android_asset/www/posts.html';
                    },
        error: function () {
            alert('some error in login');
        }
});