在我的项目中,我使用 javascript 遍历一组单选按钮。首先,它检查名称集中的选定按钮是否已更改,如果已更改,则记录该行新选定按钮的值,将其附加到变量 dataString
,然后继续下一个按钮组。这一切都很好,它完美地收集了所有数据。但是,当我尝试通过 AJAX 发送该数据时遇到问题。
对于更改的每一行,我附加一个 rowName
变量和一个 deviceName
变量来执行 dataString
。理想情况下,我想发送这些,以便当我将数据发送到 Python 时,我最终得到一个 rowName
列表和一个 deviceName
列表,就像您发送多个变量时发生的那样同名。
我的 AJAX 调用如下:
var call= $.ajax({
type: "POST",
url: "http://localhost/cgi-bin/savestate.py",
data: dataString
}).done(function() {
document.getElementById("upper").innerHTML+=(call.responseText);
});
正如我所说,我需要发送的数据已得到足够好的收集。现在,dataString
被格式化为如下所示:
"{rowName: 'firstRowName', deviceName: 'firstDeviceName', rowName: 'secondRowName', deviceName: 'secondDeviceName'}"
我还尝试更改 AJAX 调用,使 data:
调用看起来像:
data: {dataString}
并将 dataString
格式化为:
"rowName: 'firstRowName', deviceName: 'firstDeviceName', rowName: 'secondRowName', deviceName: 'secondDeviceName'"
无论我尝试发送哪种方式,数据都不会到达 python 脚本。当我从 Python 返回数据时,它显示为
FieldStorage(None, None, [])
既然 AJAX 调用中 data:
属性的格式是 {keyname: value, etc}
,是否可以在预制列表中发送数据以那种格式,还是我必须改变我格式化 dataString
的方式并以其他方式发送它?
最佳答案
我最终通过两种方式达到了预期的效果。
第一种方法:回想在实现 JQuery 之前我是如何执行 AJAX 请求的,我将 dataString
格式化为
rowName=firstRowName&deviceName=firstDeviceName&rowName=secondRowName&deviceName=secondDeviceName
等等。然后我简单地将它附加到 AJAX 调用中的 url,这样它看起来像:
url:"http://localhost/cgi-bin/saveState.py"+dataString
第二种方法:我让它工作的另一种方法是用与第一种方法相同的方式格式化dataString
,但随后只需将其用作我的data
属性。
data: dataString
我觉得这很奇怪,因为它根本不遵循 data:
调用的通常格式。但遗憾的是,它确实有效。
关于javascript - 通过 JQuery 通过 AJAX 将变量列表发送到 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17278103/