我向myserver.py本地服務器發送一個XMLHttpRequest,服務器從網站地址讀取params以從本地文件讀取數據。但我無法獲取數據(狀態0和responseText爲空)。XMLHttpRequest status 0和responseText在本地python服務器中爲空
這裏是HTML和Ajax的文件:
<!DOCTYPE html>
<html>
<head>
<script src="./js/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
function readTvInfo()
{
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()
{
document.getElementById("myDiv").innerHTML = xmlhttp.status;
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("myDiv").innerHTML = "test";
// document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://127.0.0.1:8080/?tvname=langyabang",true);
xmlhttp.send();
}
</script>
</head>
<body>
<button onclick="readTvInfo()">send HTTP GET Request</button>
<div id="myDiv"></div>
</body>
</html>
的myserver.py是
import web
import json
urls = (
'/', 'GetTvInfo'
)
class GetTvInfo:
def GET(self):
tvname = web.input()['tvname'] #get tvid
info = {}
keys = ['name', 'arear', 'language', 'type', 'actors', 'director', 'intro'];
values = []
with open('./data/' + tvname + '.txt') as infile:
for index, line in enumerate(infile.readlines()):
values.append(line.strip('\n'))
# print(values)
info = dict(zip(keys,values))
print(info)
web.header('Content-Type', 'application/json; charset=utf-8')
return json.dumps(info)
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
首先,我在終端運行 '蟒蛇myserver.py 8080' 啓動本地服務器,然後我打開'chrome'瀏覽器並點擊'發送HTTP GET請求'按鈕,但是html頁面只在按鈕下面顯示0(這意味着xmlhttp.status實際上是0)。但服務器終端顯示「」HTTP/1.1 GET /「 - 200 OK」並打印和正確的信息。
而當我直接在瀏覽器中輸入'http://127.0.0.1:8080/?tvname=langyabang'時,我實際上可以正確地獲取信息。服務器終端顯示''HTTP/1.1 GET /' - 200 OK'並打印和正確的信息。
操作系統:Mac OS。瀏覽器:Chrome。
'onclick =「readTvInfo(); return false;」'它有什麼區別? – epascarello
仍爲0狀態。 – yangqinj