Ajax返回字符串形式的python数组响应


ajax returns python array response as string

我试图列出,在一个选择下拉列表中,使用以下ajax的一些本体元素:

$.ajax({
                type: 'get', 
                url:"../py/ConfigOntology.py",
                success: function(data){
                    $("#instance_image_1").append($("<option></option>").attr("value", data).text(data));   
                },});

"ConfigOntology.py"是一个简单的代码,用于提取和打印两个本体项。但是,ajax将这两个字符串作为一个字符串。生成输出的.py内容部分如下:

import rdflib, rdfextras, cgitb
from rdflib import Graph
cgitb.enable()
print ("Content-Type: text/plain;charset=utf-8")
print("")
def getImages(results):
    for row in results:
        print (row['storedImage'][50:]) 
sparql = "the query goes here"
results = ConfigOnto.query(sparql)
getImages(results)

我尝试使用php exec()的php脚本,该脚本将.py输出作为数组,但ajax也接受该字符串。我尝试了JSON.parse(data),但错误地说"未捕获的SyntaxError:在位置0的JSON中意外的令牌K"-指的是.py输出中的行尾。

所以,我的"大"问题是:我如何访问ConfigOntology.py输出作为ajax()中的单个项目而不是字符串,以及什么可能是这个问题的可能的固定代码。

p。S:这是我第一次使用ajax函数,所以请别为难我。

我认为您应该做的是在ajax调用的端点返回一个JSON对象。

如果我理解正确,现在你试着在一个ajax请求中读取python脚本的输出,这不是正常的工作流程。

正常的工作流将是请求(客户端,您的浏览器)-> 服务器(这是在您的情况下的脚本,但它应该是一个真正的服务器)->响应(这可以是一个json对象或html,在您的情况下,它只是控制台输出)

所以你需要做的是改变你的python脚本,把控制台输出变成一个服务器的端点,这个端点应该返回一个JSON响应。

下面是一个用Flask(一个简单的python web服务器)处理json的简单例子。http://code.runnable.com/Up77jfzqtL5FAAAu/json-dumps-and-loads-in-flask-for-python

我希望这能让你开始