LINUX.ORG.RU

Django + ajax = error

 , , ,


0

2

Помогите разобраться, почему не отрабатывается success.

js:

    function test(){
      alert("Hello");
    }

    $(".s_b").click(function() {
        var material = $(".bt_material option:selected").text();
        var color = $(".bt_color option:selected").text();
        var size = $(".bt_size option:selected").text();

        var data = {material: material, color: color, size: size}

        $.ajax({

            type: "POST",
            url: "/test_ajax/",
            data: data,
            dataType: 'json',
            success: test
        });
    });

views.py:

@csrf_exempt
def my_view(request):
    if request.is_ajax() and request.method == 'POST':

        material = request.POST["material"]
        color = request.POST["color"]
        size = request.POST["size"]

        if color and material and size:

            try:
                bg_list = Bg.objects.filter(material=material).filter(color=color)
                bg_article = {"bg_article": baguette_list.article}
            except:
                bg_article = ""

            render_to_response("units/bg_list.html", json.dumps(bg_data))

Функцию test() сделал специально «тестовую», чтобы проверить отработается или нет. Так почему она не трабатывается, а отрабатывается колбэк на error? WTF?



Последнее исправление: djnoob (всего исправлений: 1)

В доку jQuery написано, что error-callback вызывается, когда request не удался. Почему же оне не удался, когдая я могу распечатывать данные из вьюхи, полученные через POST?

djnoob
() автор топика
Ответ на: комментарий от djnoob

Ага! Не хочет работать, если я подгружаю шаблон. Работает только, если возвращаю голый HttpResponse.

djnoob
() автор топика

Все правильно, тип ответа из вьюхи идет как text/html, а в .ajax ты указал json.

Если хочешь возвращать результаты рендера шаблонизатора, то используй render_to_string и ее результат загоняй в словарь, который потом возвращаешь как json

Типа такого:

res['html'] = render_to_string("units/bg_list.html")
json = json.dumps(res)
return HttpResponse(json, mimetype='application/json')

gruy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.