AJAX继续检测故障,但没有显示错误

时间:2016-09-26 09:35:46

标签: jquery ajax django

我正在使用 Chrome扩展程序。目前,它只是检查用户是否存在。

插件弹出窗口中有一个表单。用户使用他的用户名和密码填写此表单并将其发送到服务器。

在视图中找到用户,一切看起来都正常,但 AJAX 由于某种原因返回失败。

这是一个观点:

@csrf_exempt
def api_authentication(request):
    if request.method == 'POST':
        login = request.POST.get('login')
        password = request.POST.get('password')
        if login and password:
            username = login
            if '@' in login:
                username = mainapp_models.User.objects.get(email=login).username
                if not username:
                    return JsonResponse({'success':0})
            user = authenticate(username=username,password=password)
            print user # IT's ok, user is found
            if user:
                return JsonResponse({'username':user.username,
                                     'success':1})
    return JsonResponse({'success':0})

这是AJAX:

$(document).ready(function () {

    $('#login-button-id').click(function () {

        var login = $('#input-email-id').val();
        var password = $('#input-password-id').val();
        $.ajax({
            url: 'http://127.0.0.1:8000/api/authenticate',
            type: 'POST',
            data: {
                'login': login,
                'password': password
            },
            success: function () {
                alert('success');
            },
            error: function () {
                alert('failure');
            }
        })
    })
});

JsonResponse看起来像这样:{'username': u'milano', 'success': 1}

当我填写表单并发送数据时,会找到user,但是“失败”'警报。你知道这个问题是什么吗?

编辑:

Andy的回复提醒:

由于console.log无效,我将其更改为提醒:

error: function (jqXHR, textStatus, errorThrown) {
                alert("JQuery failed: " + textStatus + " with error thrown: " + errorThrown);
                alert(jqXHR.responseText);
            }

通知:

enter image description here enter image description here

EDIT2

终于找到了一个控制台日志:

enter image description here

3 个答案:

答案 0 :(得分:1)

https://developer.chrome.com/extensions/xhr

查看此文档,并检查您的权限设置是否正确。

您需要将要通过AJAX请求尝试访问的域添加到manifest.json中的“ permissions”数组。像这样:

permissions: [
 "http://127.0.0.1:8000/"
]

答案 1 :(得分:0)

多一点调试会很方便。尝试更改您的AJAX错误函数以报告更多(不多,但它有帮助):

error: function(jqXHR, textStatus, errorThrown){
  console.log("JQuery failed: " + textStatus + " with error thrown: " + errorThrown);
  console.log(jqXHR);
  alert('AJAX failed. Check browser console for more info');
}

另外,您是否正在从开发服务器(./manage.py runserver)运行django应用程序?这样做并寻找任何有用的输出,如堆栈跟踪。可能就像Python代码中的拼写错误或遗忘导入一样简单

答案 2 :(得分:-1)

另一个建议 - 仔细看看你的Python尝试改变:

echo $val = dechex(-29338);
result = ffff8d66

echo  $val & 0xFFFF ;