下面是我在html中用来发送用户id(数字)数组的代码。单击我要发送阵列的复选框(checkID):-
var checkIds = []
$(document).on("click","#group_save",function(){
$("#candidate-data tr").each(function(index,rowhtml){
var checked= $('input[id="groups"]:checked',rowhtml).length;
checkIds = jQuery.unique(checkIds)
if (checked==1){
checkIds.push($('.hideMe',rowhtml).text());
}
});
alert(checkIds);
var jsonText = JSON.stringify(checkIds)
checkIds.length = 0;
var groupName = $('input:text[name="group_name"]').val();
alert(groupName)
$.ajax({
url: "{% url 'userinfo:groups' %}" + "?gname="+groupName,
type: "POST",
data:jsonText,
dataType: 'json',
success: function(){
notyfy({type: "success", layout: "topCenter", text: "Saved", timeout: 5000});
}
});
});
如何访问视图中的data:jsonText
。py我这样做是行不通的,我必须把gname
(name)和数组(jsonText
)id一起保存在两个表中GroupMembers在Groups表中,我必须保存group name(gname),保存后我必须获得保存的group对象的id和userid数组(jsonText)一起保存在GroupMembers中表格:-在
这对我很有效:
在你的视图.py:
^{pr2}$jsonText
是js文件中用于描述JSON的变量的名称。它不是JSON结构中某些数据的键的名称。在下面的行中,将jsonText
替换为实际的密钥名。在您应该能够使用以下工具:
然后在python方面只需使用:
^{pr2}$简短的解释
首先,jQuery为您处理数据对象的转换,因此实际上不需要使用
JSON.stringify
或其他任何东西对其进行预处理,除非您要向服务器发送非常特定的格式。通过设置traditional: true
,您要求jQuery使用以下格式转换数组参数:而不是:
这一点很好地解释了here和{a2},但长短不一的是python/django支持使用
.getlist()
开箱即用的param序列化的“非方括号”形式。在噢,
checkIds.slice(0)
(它创建了数组的一个副本)的原因仅仅是因为您稍后要设置checkIds.length = 0;
,我脑子里的妄想症告诉我,如果ajax调用在稍后的执行周期中触发,那么如果我使用的是直接引用而不是副本,那么数组将是空的。这是极不可能的,因为ajax调用应该在被请求时立即触发,但是在处理像jQuery这样的黑盒或库时,我总是过于谨慎。。。你不应该迎合我的妄想症,而且很有可能安全地使用:相关问题 更多 >
编程相关推荐