Отправьте Json с помощью $ .load () jQuery в GET-запросе к Django - PullRequest
2 голосов
/ 27 августа 2011

Счастливого всем выходного кодирования !!!.

Я застрял, пытаясь отправить объект JSON через $ .load () из jQuery, я хочу отправить его с помощью метода GET, это код, который у меня есть в моем коде JavaScript, я прикрепил запрос Ajax, который для ясности получает объект JSON:

function ajaxLoadClasses() {
    $.ajax({
        url: 'load_classes/',
        type: 'GET',
        dataType: 'json',
        success: function(json) {
            $.each(json, function(iterator,item) {
                              loadViaGet(item);
            });
        },
        error: function(xhr, status) {
            alert('Sorry, there was a problem!');
        },
        complete: function(xhr, status) {},
    });
}


function loadViaGet(item) {
    $div = $('div.myClass');
    //Here is where I'm stuck, I'm not sure if this is the way to send the JSON obj
    $div.load('thisAppURL/?json=' + encodeURIComponent(item), function() { 
        alert('Load was performed');
    });
}

«Предмет», полученный json obj, был сделан из модели Джанго с использованием

jsonToSendToAjax = serializers.serialize('json', obj)

И я не думаю, что я использую правильные методы в моем Django для десериализации объекта JSON или для преобразования объекта JSON в объект Python, чтобы я мог обработать его в своем представлении и отправить в шаблон:

def popUpForm(request):
    jsonData = request.GET['json']

    deser = serializers.deserialize('json', jsonData)

    #This could be another way to convert the JSON object to a Python Object
    #pythonObj = simplejson.loads(jsonData)

    return render_to_response('class_pop_up_form.html', deser)

Будет очень полезно, если кто-нибудь сможет мне помочь с этим !! Я действительно борюсь с этим, но я не нахожу правильный способ сделать это.

РЕДАКТИРОВАТЬ 1: Я хочу отправить объект JSON через GET с помощью функции $ .load (), а не с помощью метода POST, как я прочитал в jQuery api: http://api.jquery.com/load/ метод $ .load () работает следующим образом: .load (url, [data], [complete (responseText, textStatus, XMLHttpRequest)])

Метод POST используется, если данные предоставляются в виде объекта; в противном случае предполагается GET.

РЕДАКТИРОВАТЬ 2: Забудьте об отправке объекта json через метод GET, теперь я использую метод POST, но сейчас я не понимаю, как использовать этот объект json в моем Django View.py, не знаю, нужно ли десериализовать это или нет, формат объекта json, который я использую, следующий:

{"pk": 1,
"model": "skedified.class",
"fields": {
      "hr_three": null,
      "group": 1,
      "name": "Abastecimiento de agua",
      "day_three": null,
      "day_one": "1 , 3",
      "hr_one": "10+/3",
      "online_class": null,
      "teacher_name": "Enrique C\\u00e1zares Rivera /   ",
      "day_two": null,
      "class_key": "CV3009",
      "hr_two": null }
}

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Это не то, как jQuery предлагает отправлять данные, и, вероятно, это тоже не очень хорошая идея.Ваш URL становится очень уродливым и длинным очень быстро, если вы добавляете в него строку json следующим образом.

Используйте второй аргумент для $ .load;«data» (см. http://api.jquery.com/load/) вместо этого. Так что-то вроде

$div.load('thisAppURL', {"json": encodeURIComponent(item)});

Кроме того, если вы хотите отслеживать вывод, я бы предложил использовать третий аргумент, функцию обратного вызова и использоватьконсоль вместо предупреждения. Вы также можете получить реальный доход с сервера. Таким образом, вы получите что-то вроде:

$div.load(
  'thisAppURL',
  {"json": encodeURIComponent(item)},
  function(response, status, xhr){
    console.log(response);
  }
);
0 голосов
/ 27 августа 2011

вопрос мне не ясен, но вы можете отправить json через load в качестве второго аргумента

$div = $('div.myClass');
//Here is where I'm stuck, I'm not sure if this is the way to send the JSON obj
$div.load('thisAppURL/?json=' + encodeURIComponent(item),{"name":"john","age":"20"}, function() { 
    alert('Load was performed');
});

для преобразования массива javascript в json смотри этот ответ Преобразование массива в JSON

и для десериализации json в django десанализация Django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...