Używam struktury sieci Web Django i próbuję zaktualizować pasek stanu po stronie klienta, aby wyświetlić postęp przesyłania plików. W moim widoku Django stworzyłem, powracam postępy jako obiekt JSON z następującymi:

response = HttpResponse(json.dumps(response_data), content_type="application/json")
        return response

Na stronie internetowej próbuje uzyskać te informacje z następującym zastosowaniem funkcji $ .getjson ()

function status(importid){
    var barProgress = window.setInterval("getProgress(importid);", 1000);
}

function getProgress(importid){
    var url=api_server_address+"import/status/update/";
    console.log(url);
    $.getJSON(url,{impid: importid},
      /*UPDATE--if I check the url at this point it is what I expect, 
      the same url I hardcode below
      http://localhost:8000/status/update/?impid=258
      */
        function(data) {
            alert(data);
        }
    );
}

function loadBar(data){
    $('#progressBar').progressbar(load);
}

Jednak kiedy sprawdzam odpowiedź w konsoli debugowania, otrzymuję błąd wewnętrzny 500. Jeśli zamiast używać zmiennej URL i przekazuję funkcję, dyskretowany adres URL, otrzymuję wyniki JSON. Na przykład następujące zwraca odpowiedź, którą chcę:

$.getJSON("http://localhost:8000/status/update/?impid=258", function(data) {
    console.log(data);
});

Chcę być w stanie dynamicznie zmienić adres URL, który jest przekazywany w zależności od numeru DIMID, który zostanie wysłany na żądanie GET. Od dawna próbowałem rozwiązać ten problem, więc naprawdę doceniam jakąkolwiek pomoc, którą możesz zaoferować. Dzięki wielkie!

0
sreisman 6 grudzień 2013, 00:00

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj z pełnym podejściem Ajax, bez Shorthand getJSON:

var url=api_server_address+"import/status/update/";
var getProgress =  function(importId) {
     $.ajax({
        url: url,
        data: { impid: importId },
        type: "GET",
        dataType: "json"
     })
     .done(function(data){
         console.log(data);
     });
}
1
waldek_h 5 grudzień 2013, 20:25

Spróbuj tego z GetJson

function getProgress(importid){
    var url = api_server_address + "import/status/update/";
    console.log(url);
    $.getJSON(url, {impid: importid})
        .done(function(data) {
            console.log(data);
        });
}
2
dcodesmith 5 grudzień 2013, 20:28