快乐编码周末给大家!!!。
我试图通过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对象,因此我可以在视图中处理它并将其发送到模板:
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 }
}
答案 0 :(得分:2)
这不是jQuery建议你应该发送数据的方式,也不是这样做的好主意。如果你像这样添加json字符串,那么你的网址会非常难看并且很快。
使用$ .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);
}
);
答案 1 :(得分:0)
这个问题对我来说并不清楚,但你可以通过load发送json作为第二个参数
$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,请参阅此答案Convert array to JSON
用于在django Django Deserialization
中反序列化json