gpt4 book ai didi

django - 通过 jQuery 的 $.load() 在 GET 请求中将 Json 发送到 Django

转载 作者:行者123 更新时间:2023-12-01 04:24:53 24 4
gpt4 key购买 nike

祝大家编码周末快乐!

我试图通过 jQuery 的 $.load() 发送 JSON 对象,我想用 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');
});
}

收到的“item”json obj 是由 Django 模型使用

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

而且我认为我没有在 Django 中使用正确的方法来反序列化 JSON 对象或将 JSON 对象转换为 Python 对象,以便我可以在 View 中处理它并将其发送到模板:

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:我想通过 GET 使用 $.load() 函数发送 JSON 对象,而不是使用 POST 方法,正如我在 jQuery api 中读到的:http://api.jquery.com/load/ $.load() 方法的工作原理如下: .load( url, [data], [complete(responseText, textStatus, XMLHttpRequest)] )

如果数据作为对象提供,则使用 POST 方法;否则,假定为 GET。

编辑2:忘记通过 GET 方法发送 json 对象,现在我正在使用 POST 方法,但现在我不知道如何在我的 Django View.py 中使用该 json 对象,不知道是否需要反序列化无论是否,我正在使用的 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 }
}

最佳答案

这不是 jQuery 建议您发送数据的方式,而且这样做可能也不是一个好主意。如果你像这样添加 json 字符串,你的 url 会变得非常难看而且很快就会变得很长。

使用$.load的第二个参数;改为“数据”(参见 http://api.jquery.com/load/ )。所以像

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

此外,如果您想跟踪输出,我建议使用第三个参数(回调函数),并使用控制台而不是警报。您也可以通过这种方式从服务器获得实际返回。所以你会得到类似的东西:

$div.load(
'thisAppURL',
{"json": encodeURIComponent(item)},
function(response, status, xhr){
console.log(response);
}
);

关于django - 通过 jQuery 的 $.load() 在 GET 请求中将 Json 发送到 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com