将JSON从python脚本发送到JQuery
我是Jquery的新手,下面的脚本不会在HTML页面上生成任何输出 问题:将JSON从python脚本发送到JQuery,jquery,python,html,json,ajax,Jquery,Python,Html,Json,Ajax,我是Jquery的新手,下面的脚本不会在HTML页面上生成任何输出 问题: import requests import json def send_log_ajax(): url = 'http://xx.com/returnjsonobj' response = requests.get(url) return response.json() if __name__ == '__main__': ajax_var = send_log_ajax()
import requests
import json
def send_log_ajax():
url = 'http://xx.com/returnjsonobj'
response = requests.get(url)
return response.json()
if __name__ == '__main__':
ajax_var = send_log_ajax()
print(ajax_var)
<html>
<head><script
src="https://code.jquery.com/jquery-3.2.1.min.js"></script></head>
<body>
<div style="border:1px solid black;background-color:lightgray">
<p id="transactioninfo">Loading Transaction Information...</p>
</div>
<script>
function getlogs() {
var url = 'www.myserver.com/getajaxtest.py';
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
$("#transactioninfo").html(data)
},
error: function(e) {
console.log(e.message);
}
});
}
$(document).ready(function(){
setTimeout(function(){getlogs();}, 2000);
setInterval(function(){getlogs();}, 2000);
});
</script>
</body>
</head>
</html>
在我的脚本中,我使用requests
库向返回JSON对象的FlaskURL发送GET请求。然后需要将该对象发送到JQuery,JQuery随后将在网页上输出JSON对象。如果使用response.text
发送数据,效果很好,但是如果使用response.json()
发送数据,则不会输出任何内容。但是,我需要将其作为JSON对象发送,这样我就可以从中提取所有数据并将其放在HTML元素上
getajaxtest.py:
import requests
import json
def send_log_ajax():
url = 'http://xx.com/returnjsonobj'
response = requests.get(url)
return response.json()
if __name__ == '__main__':
ajax_var = send_log_ajax()
print(ajax_var)
<html>
<head><script
src="https://code.jquery.com/jquery-3.2.1.min.js"></script></head>
<body>
<div style="border:1px solid black;background-color:lightgray">
<p id="transactioninfo">Loading Transaction Information...</p>
</div>
<script>
function getlogs() {
var url = 'www.myserver.com/getajaxtest.py';
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
$("#transactioninfo").html(data)
},
error: function(e) {
console.log(e.message);
}
});
}
$(document).ready(function(){
setTimeout(function(){getlogs();}, 2000);
setInterval(function(){getlogs();}, 2000);
});
</script>
</body>
</head>
</html>
HTML和JQuery:
import requests
import json
def send_log_ajax():
url = 'http://xx.com/returnjsonobj'
response = requests.get(url)
return response.json()
if __name__ == '__main__':
ajax_var = send_log_ajax()
print(ajax_var)
<html>
<head><script
src="https://code.jquery.com/jquery-3.2.1.min.js"></script></head>
<body>
<div style="border:1px solid black;background-color:lightgray">
<p id="transactioninfo">Loading Transaction Information...</p>
</div>
<script>
function getlogs() {
var url = 'www.myserver.com/getajaxtest.py';
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
$("#transactioninfo").html(data)
},
error: function(e) {
console.log(e.message);
}
});
}
$(document).ready(function(){
setTimeout(function(){getlogs();}, 2000);
setInterval(function(){getlogs();}, 2000);
});
</script>
</body>
</head>
</html>
正在加载事务信息
函数getlogs(){
var url='www.myserver.com/getajaxtest.py';
$.ajax({
键入:“GET”,
url:url,
数据类型:“json”,
成功:功能(数据){
$(“#transactioninfo”).html(数据)
},
错误:函数(e){
控制台日志(e.message);
}
});
}
$(文档).ready(函数(){
setTimeout(函数(){getlogs();},2000);
setInterval(函数(){getlogs();},2000);
});
您正在打印的是Python数据结构,而不是JSONrequests.json()。这不是JSON数据
只需将数据保留为JSON数据,并打印收到的文本即可。您的脚本只是一个代理,不需要解释JSON数据
如果您必须解码(也许您想对包含的数据应用一些转换),请确保再次编码回JSON。使用生成新的JSON编码字符串。我是否只使用response.text
,然后在JQuery中使用数据类型:“JSON”
?不,不需要转换,我只需要从其中的键中提取值Jquery@omrakhur:然后只需打印Unicode文本的response.text
,或者将response.content
直接写入sys.stdout.buffer
以避免从字节解码并重新编码。我对response.content
和response.text
有点混淆。如果我使用前一种方法,当东西返回到JQuery时,它还会被视为JSON吗?@omrakhur:response.content
是来自服务器的原始响应,以字节表示。JSON是一种基于文本的格式,因此您可以将字节解码为文本。这就是响应的内容。text
值是通过文本编码解释的字节(对于JSON,通常是UTF-8)。@omrakhur:使用print()
写入文本时必须再次对该文本进行编码,因为文件(包括终端或网络连接)只需要字节。因此,JSON文本再次被编码为字节,编码可能会有所不同。因此,对于相同的JSON数据,您可能会得到不同的结果。您没有指定如何运行Python脚本(可能是CGI脚本吗?),因此不清楚将使用什么编码。它可能只是ASCII,我知道Flask会生成ASCII安全的JSON,所以可能一切都很好。