我还想在javascript函数中使用XMLHttpRequest对象,从下拉列表(下面的代码中称为'Users')中发送有关当前所选选项的信息,作为我的Python脚本中函数的参数,然后从该函数获取返回值并使用它来设置另一个列表(下面的代码中的'Tasks')我想这样做,以便我可以使用我作为返回的数据更新“任务”中的信息来自Python函数的值我这样做是因为我需要页面不必重新加载。如果你知道一种更好的方法来实现这一点,我会接受你的想法。
def main():
with open("Users.json", 'r') as data_file:
usersDictionary = json.load(data_file)
Users=usersDictionary["Users"]
print "Content-Type: text/html"
print ""
print """
<html>
<head>
<script>
function setTaskList(){
#Insert Javascript which will call python function here...
}
</script>
<title>TestPage</title>
</head>
<body onload="setTaskList()">
<form>"""
print """<select name="Users" onchange="setTaskList()">"""
for user in Users:
if(not(len(user["Tasks"]["High"])==0 and len(user["Tasks"]["Med"])==0 and len(user["Tasks"]["Low"])==0)):
print """<option value="{0}">{1}</option>""".format(user["UID"], user["name"])
print "</select>"
print """<select name="Tasks" disabled="disabled">"""
print "</select>"
print"""<input type="Submit" value="Add Task"/>
<button type="button">Delete Task</button>"""
print"""
</form>
</body>
</html>"""
main()
对于下面的代码,我希望能够在单击提交时从输入框中获取数据,并将从输入框和单选按钮获取的信息发送到python函数以处理它并将其添加为JSON对象为JSON字典,然后更新JSON文件,然后返回上一页(具有上述代码的页面)(假设称为index.py)。
print "Content-Type: text/html"
print ""
print"""<html>
<head>
<title>Title</title>
</head>
<body>
<form action = "/~theUser/cgi-bin/index.cgi" method = "POST">
Task Name: <input type = "text" name = "TaskName"
placeholder="Task name" /> <br />
Task Description: <input type = "text" name = "TaskDescription"
placeholder="task description" /> <br />
User ID: <input type = "text" name = "UID" placeholder="User Id"
/> <br />
Priority <br/>
<input type="radio" name="gender" value="High"> High<br>
<input type="radio" name="gender" value="Medium"> Medium<br>
<input type="radio" name="gender" value="Low"> Low<br>
<input type = "submit" value = "Submit" />
</form>
</body>
</html>"""
任何人都可以帮忙,我对这个CGI的东西真的很陌生,真的很感激。另外,如果您对我这样做更好,请告诉我。 谢谢!
答案 0 :(得分:0)
经过长时间的试验和错误,并等待一个从未来过的答案,我想出了如何自己这样做,所以我想我可以帮助那些需要这个的人我能够从我的python发送请求使用javascript的cgi脚本如下:
python3.6 -m venv environment
在我的python脚本中,java脚本在这里遇到的是我如何获取参数并处理它们:
print "Content-Type: text/html"
print ""
print """
<html>
<head>
<script>
function getTasks() {
//put more processing in the function as needed
var xmlhttp;
var parameters = "This must be a string which will be the parameters
you will receive in your python script";
var scriptName = "pythonScript To CommunicateWith.py";
//may be .cgi as well depending on how you are using it
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST", scriptName, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//retrieve a json response and parse it into userTasks
usersTasks = JSON.parse(xmlhttp.responseText);
}
}
xmlhttp.send(parameters);
}
</script>
使用Pycharm和python CGIHTTPServer函数进行调试帮助了我。 希望这可以帮助那些人。