【问题标题】:not going through the django view through ajax post data不通过 ajax 发布数据通过 django 视图
【发布时间】:2014-09-04 11:08:06
【问题描述】:

我正在通过 ajax 进行登录。 jquery 函数工作正常,但它不去 ajax url。所以 django 视图没有被执行。

Ajax.html

$(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;
                            });
                    });

我的 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")

当我点击登录按钮时,我收到警报,但没有进入查看。网址正确。

【问题讨论】:

    标签: javascript jquery python ajax django


    【解决方案1】:

    我首先建议在开发人员工具控制台打开的情况下使用 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 重定向一样工作。 更多信息redirect page

    你应该能够看到你的观点。

    【讨论】:

      【解决方案2】:

      我犯了一个愚蠢的错误。我在此页面上提供了错误的域地址。现在它起作用了。

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

      这个地址是错误的。这就是它无法进入视图的原因。

      【讨论】:

        【解决方案3】:

        你忘记了 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');
                }
        });
        

        【讨论】:

        • 仍然无法正常工作,,,,,我认为 dataType 对于这个 perticuler ajax 来说无关紧要。
        • 尝试改变mimetype返回返回HttpResponse(response, mimetype='application/javascript')
        猜你喜欢
        • 2020-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        相关资源
        最近更新 更多