Javascript 在Python服务器上处理JSON对象会导致“list”对象没有属性“read”错误
我有javascript代码,可以提取数据并创建JSON对象发送到服务器Javascript 在Python服务器上处理JSON对象会导致“list”对象没有属性“read”错误,javascript,python,json,Javascript,Python,Json,我有javascript代码,可以提取数据并创建JSON对象发送到服务器 for (i=0;i<selected.length;i++) { if (selected[i].value == "available") { //Add item to the selectedjsonObj list //alert("The new select ID is: " + selected[i].text); selectedjso
for (i=0;i<selected.length;i++)
{
if (selected[i].value == "available")
{
//Add item to the selectedjsonObj list
//alert("The new select ID is: " + selected[i].text);
selectedjsonObj[selected[i].text] = selected[i].text;
selected[i].value = "selected";
selectedChange++;
}
}
for (i=0;i<available.length;i++)
{
if (available[i].value == "selected")
{
//Add item to the availablejsonObj list
//alert("The new available ID is: " + available[i].text);
availablejsonObj[available[i].text] = available[i].text;
available[i].value = "available";
availableChange++;
}
}
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("title_msg").innerHTML=xmlhttp.responseText;
// var el = document.getElementById('userid_msg');
if (xmlhttp.responseText=="Updated") {
document.getElementById("title_msg").innerHTML=xmlhttp.responseText;
}
else {
alert("An error occurred saving your changes. Please refresh the page and try again.");
document.getElementById("title_msg").innerHTML=xmlhttp.responseText;
}
}
}
var x=document.forms["cohort"]["title"].value;
if (selectedChange && availableChange) {
xmlhttp.open("GET","/update/cohortfriends?a=" + JSON.stringify(availablejsonObj) + "&s=" + JSON.stringify(selectedjsonObj) + "&t=" + x, true);
xmlhttp.send();
}
if (selectedChange) {
xmlhttp.open("GET","/update/cohortfriends?s=" + JSON.stringify(selectedjsonObj) + "&t=" + x, true);
xmlhttp.send();
}
if (availableChange) {
xmlhttp.open("GET","/update/cohortfriends?a=" + JSON.stringify(availablejsonObj) + "&t=" + x, true);
xmlhttp.send();
}
document.getElementById("save_cohort_friends").innerHTML="No Changes";
获取的a-“list”对象没有属性“read”-错误
删除了_friends=json.loadself.request.get_alla语句
由于我是python和javascript新手,并且是自学成才的,我确信我在做一些概念上错误的事情。感谢所有帮助。来自文档: loadfp,cls=None,object\u hook=None,parse\u float=None,parse\u int=None, 解析_常量=无,对象_对_钩子=无,**千瓦 反序列化fp a.read支持文件,如包含 将JSON文档转换为Python对象 因此,json.load需要的是一个类似文件的对象,而不是一个列表,request.get\u all返回该对象。您给json.load一个列表,这会导致此错误 此外,请使用json.load而不是json.load 试试这个:
info = json.dumps(self.request.get_all("a"))
removed_friends = json.loads(info)
get_all函数返回查询字符串参数a的所有值。因为您只有一个a,所以应该使用get。另外,使用json.loads将字符串解析为json
removed_friends = json.loads(self.request.get("a"))
# here ^ and here ^
request.get_all提供了一个列表,该列表不是json.load的有效参数。您将需要迭代该列表并分别处理其中的每个元素。我想这就是为什么我必须添加[0]来处理我的参数。谢谢大家的快速回复。这些回答不仅解决了我的问题,还澄清了我的一些糊涂想法。现在我需要清理一些其他代码。再次感谢。
removed_friends = json.loads(self.request.get("a"))
# here ^ and here ^