我试图在选择下拉列表中使用以下ajax列出一些本体元素:
$.ajax({
type: 'get',
url:"../py/ConfigOntology.py",
success: function(data){
$("#instance_image_1").append($("<option></option>").attr("value", data).text(data));
},});
&#34; ConfigOntology.py&#34;是一个简单的代码,提取和打印两个本体项目。但是,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(数据),但得到错误说&#34; Uncaught SyntaxError:位于0和#34的JSON中的意外标记K; - 引用.py输出中的行尾。
所以,我的&#34;大&#34;问题是:如何作为ajax()中的单个项而不是字符串访问ConfigOntology.py输出,以及可能是此问题的可能固定代码。
P.S:这是我的第一个ajax功能,所以请放轻松我。
答案 0 :(得分:0)
我认为你应该做的是在你的ajax调用的端点返回一个JSON对象。
如果我现在正确理解它,你会尝试在ajax请求中读取python脚本的输出,这不是正常的工作流程。
正常的工作流程是请求(客户端,您的浏览器) - &gt; 服务器(在您的情况下是脚本,但它应该是服务器) - &gt;响应(这可以是json对象或html,在你的情况下它只是控制台输出。)
所以您需要做的是更改pyhton脚本,将脚本输出提供给服务器的端点,该端点应返回 JSON 响应。
这是一个使用Flask(一个简单的python webserver)进行json处理的简单示例 http://code.runnable.com/Up77jfzqtL5FAAAu/json-dumps-and-loads-in-flask-for-python
我希望这可以帮助你开始