我试图发送一个数组CherryPy的,但事实证明空。
这是我的js文件。 我检查和数组被填补,因为它应该。
$(function () {
$('#mark-read').on('click', function (e) {
alert_ids = [];
$("input:checkbox[name=alert-cb]:checked").each(function() {
alert_ids.push($(this).attr('id'));
});
$.ajax({
type: 'POST',
url: 'markasread',
data: { alerts: alert_ids },
traditional: true,
success: function (data) {
alert(data);
}
});
});
});
这是CherryPy的部分(我用这个答案作为一个准则)
@cherrypy.expose
def markasread(self, **alerts_ids):
""" Mark alerts as read """
a_ids = alerts_ids.pop('alerts[]', [])
alerts.mark_as_read(a_ids)
return json.dumps(a_ids)
这是从上面的Python代码被调用的函数
def mark_as_read(alerts):
alerts_file = ET.parse(ALERTS_FILE)
root = alerts_file.getroot()
for a_id in alerts:
alert = root.find("./alert[@id='" + a_id + "']")
alert.set('status', 'watched')
alerts_file.write(ALERTS_FILE)
我的目标是将数据保存到一个XML文件。 我已经成功地保存到类似的代码,XML文件。 问题是,“警告”中的for循环是空的,这意味着阵列没有与Ajax调用(至少这是我的猜测)通过。
有什么想法吗?