Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在DJANGO中发布AJAX时出错_Django_Ajax_Post - Fatal编程技术网

在DJANGO中发布AJAX时出错

在DJANGO中发布AJAX时出错,django,ajax,post,Django,Ajax,Post,我有一个来自ajax的POST请求。在后端,django视图中的一些记录会被更新,这样做很好,但是出现了一个错误,页面不会被重新加载 这是错误: $.ajax({ headers: { "X-CSRFToken": token }, "url": '/articulos/massup/', "type": "POST", "dataType": "json", data: da

我有一个来自ajax的POST请求。在后端,django视图中的一些记录会被更新,这样做很好,但是出现了一个错误,页面不会被重新加载

这是错误:

$.ajax({
headers: { "X-CSRFToken": token },
"url": '/articulos/massup/', "type": "POST",
"dataType": "json", data: data,
success: function(e){
if(e="OK"){
location.reload(true);
}
},
error: function(a,b,c){
alert(c);
}
});
});
@csrf_exempt
def massup(request):
    template_name = "articulos/articulos_ok.html"  
    contexto={}  
    if request.method=="GET":  
        cat = Articulos.objects.all().order_by("codigo")  
        contexto={"obj":cat}  
    if request.method=="POST":  
        codigos=request.POST.getlist("codigos[]")
        porcentaje = codigos[0]#el primer elemento de la lista es el porcentaje
        porcentaje=Decimal(porcentaje)
        codigos= [int(x) for x in codigos]#Convierte la lista en integer
        art_change = Articulos.objects.filter(pk__in=codigos)
        i=0
        for item in art_change:
            if i!=0: #Excluye el primer item ( el porcentaje)
                precioant=item.precio
                precionuevo=(precioant + (porcentaje * precioant/100))
                item.precio=precionuevo
                item.save()
            i=i+1
        return HttpResponse("OK")
    return render(request,template_name,contexto)
SyntaxError:JSON中位于位置0的意外标记O

这是ajax:

$.ajax({
headers: { "X-CSRFToken": token },
"url": '/articulos/massup/', "type": "POST",
"dataType": "json", data: data,
success: function(e){
if(e="OK"){
location.reload(true);
}
},
error: function(a,b,c){
alert(c);
}
});
});
@csrf_exempt
def massup(request):
    template_name = "articulos/articulos_ok.html"  
    contexto={}  
    if request.method=="GET":  
        cat = Articulos.objects.all().order_by("codigo")  
        contexto={"obj":cat}  
    if request.method=="POST":  
        codigos=request.POST.getlist("codigos[]")
        porcentaje = codigos[0]#el primer elemento de la lista es el porcentaje
        porcentaje=Decimal(porcentaje)
        codigos= [int(x) for x in codigos]#Convierte la lista en integer
        art_change = Articulos.objects.filter(pk__in=codigos)
        i=0
        for item in art_change:
            if i!=0: #Excluye el primer item ( el porcentaje)
                precioant=item.precio
                precionuevo=(precioant + (porcentaje * precioant/100))
                item.precio=precionuevo
                item.save()
            i=i+1
        return HttpResponse("OK")
    return render(request,template_name,contexto)
这是视图:

$.ajax({
headers: { "X-CSRFToken": token },
"url": '/articulos/massup/', "type": "POST",
"dataType": "json", data: data,
success: function(e){
if(e="OK"){
location.reload(true);
}
},
error: function(a,b,c){
alert(c);
}
});
});
@csrf_exempt
def massup(request):
    template_name = "articulos/articulos_ok.html"  
    contexto={}  
    if request.method=="GET":  
        cat = Articulos.objects.all().order_by("codigo")  
        contexto={"obj":cat}  
    if request.method=="POST":  
        codigos=request.POST.getlist("codigos[]")
        porcentaje = codigos[0]#el primer elemento de la lista es el porcentaje
        porcentaje=Decimal(porcentaje)
        codigos= [int(x) for x in codigos]#Convierte la lista en integer
        art_change = Articulos.objects.filter(pk__in=codigos)
        i=0
        for item in art_change:
            if i!=0: #Excluye el primer item ( el porcentaje)
                precioant=item.precio
                precionuevo=(precioant + (porcentaje * precioant/100))
                item.precio=precionuevo
                item.save()
            i=i+1
        return HttpResponse("OK")
    return render(request,template_name,contexto)

Ajax调用的数据类型被定义为JSON,但您不会将JSON数据返回给Ajax函数。当调用返回的数据不是预期的JSON格式时,会发生特定错误。视图的POST部分返回HttpResponse,而不是JSON数据

所以只需导入JsonResponse并使用它而不是HttpResponse

在你看来:

from django.http import JsonResponse

 """
 your view code here, then end your POST section with:
 """

        data['success'] = True
        return JsonResponse(data)
然后更新Ajax函数以正确读取响应。我将变量“e”改为带有“success”键的“data”,只是为了更清楚地了解正在发生的事情。记住,JSON非常类似于python字典:

success: function(data){
if(data['success'])...

它符合你的指示。问题在于如何按照你所说的设置响应。谢谢分享你的知识。@wwrandazoo很高兴听到这个消息。既然它回答了你的问题,请考虑将答案标记为工作解决方案(响应的左边的绿色复选标记),这样我就得到了信任。谢谢你。我做了好几次,但是一条消息弹出说“你没有足够的声誉去做那件事”。对不起,再次谢谢你!