Невозможно отправить данные JSON из Django в javascript - PullRequest
0 голосов
/ 09 февраля 2019

Мне нужно отправить некоторые данные из файла html в django для некоторой обработки и вернуть их обратно, используя ajax Но ответ идет на обратный вызов ошибки в вызове ajax со статусом = 0

Это код ajax, я пробовал оба прокомментированных URL

 function snapshot() {
        ctx.drawImage(video, 0,0, canvas.width, canvas.height);
        imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
        console.log(imageData)
        //url:"{% url 'blind:getcaption' %}",

        $.ajax({
          type: 'GET',
          url: 'http://127.0.0.1:8000/blind/ajax/getcaption/',
          //url: /ajax/getcaption/ 
          data: {
            'img': imageData
          },
          dataType: 'json',
          success: function (data) {
            console.log(data);
          },
          error: function(request, status, error){
              console.log(request, " " ,status, " ", error)
          }

        });
      } 

Это views.py

def getcaption(request):
    img = request.GET.get('img', None)
    data = {'caption': "This caption for test"}
    return JsonResponse(data)

И urls.py

app_name = 'blind'
urlpatterns = [
    path('', views.index, name='index'),
    url(r'^ajax/getcaption/$', views.getcaption, name='getcaption'),
]

Но когда я набираю URL, нажмите url:'http://127.0.0.1:8000/blind/ajax/getcaption/, и я снова получу объект json, просмотренный в chrome

1 Ответ

0 голосов
/ 10 февраля 2019

Во-первых, вы можете написать url в вызове ajax, как показано ниже, а затем проанализировать JSON, который вы получаете.

    function snapshot() {
        ctx.drawImage(video, 0,0, canvas.width, canvas.height);
        imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
        console.log(imageData)
        //url:"{% url 'blind:getcaption' %}",

        $.ajax({
          type: 'GET',
          url : '{% url "getcaption" %}',
          data: {
            'img': imageData
          },
          dataType: 'json',
          success: function (data) {
            console.log(JSON.parse(data));
          },
          error: function(request, status, error){
              console.log(request, " " ,status, " ", error)
          }

        });
      } 

Затем измените ваше представление, сбросьте словарь вобъект json перед возвратом ответа json:

def getcaption(request):
    img = request.GET.get('img', None)
    data = {'caption': "This caption for test"}
    return JsonResponse(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...