我有一个很大的多选菜单(450项,分类不良的结果)。 AJAX似乎是一种很好的方式将这些传递回服务器并节省人们在页面重新加载时再次输入选择的努力。
我的问题是将所有这些传递给Flask - 现在我只得到前三分之一。
我的AJAX:
request.form.getlist('occArray')
所以我可以看到每个项目都被正确地添加到列表中,并且列表的长度在450处也很好。
但是在我的Flask应用程序中,当我打电话时
<script>
function loadXMLDoc()
{
var req = new XMLHttpRequest()
req.onreadystatechange = function()
{
if (req.readyState == 4)
{
if (req.status != 200)
{
//error handling code here
}
else
{
var response = JSON.parse(req.responseText)
$("#content").html(response.graph);
}
}
}
req.open('POST', '/safety1Ajax')
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
var occList = document.getElementById('occClass');
occArray = [];
for (var i = 0; i < occList.options.length; i++) {
if (occList.options[i].selected) {
console.log(occList.options[i].value)
occArray.push(occList.options[i].value);
}
}
console.log(occArray.length)
var postVars = occArray='+occArray
req.send(postVars)
return false
}
</script>
我可以看到它只在前三分之一左右。将其拆分为Python列表会显示它只有150个左右的元素 - 按照它们存在于菜单中的顺序,以及控制台记录它们的顺序(并因此附加它们 - 大概)。
我已经读完了,我看不出有什么限制我碰到了 - 有没有?
编辑 - 完成AJAX调用
根据要求 - 这是完整的AJAX调用(至少我认为这是意思)。其他元素已被省略(例如日期选择器)。 返回是response.graph。
let customDimension = data as! String
tracker.set(GAIFields.customDimension(for: UInt(indexNo)), value: customDimension)