【问题标题】:Getting data from python in Javascript and AJAX在 Javascript 和 AJAX 中从 python 获取数据
【发布时间】:2014-07-31 01:04:22
【问题描述】:

我在从 python 检索信息并尝试在 html 页面中显示数据时遇到一些问题 我从 python 脚本 (data.py) 中获取日期

import cx_Oracle
import json

lst_proveedores=[{}]
conn_str = 'user/pass@database'
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
c.execute('select id, name from provider')
for row in c:
    record1 = {"id":row[0], "name":row[1]}
    lst_proveedores.append(record1)
json_string = json.dumps(lst_proveedores)
print json_string
conn.close()

我尝试在 html 页面中使用 AJAX 解析信息

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function ajax_get_json(){
    var results = document.getElementById("results");
    var hr = new XMLHttpRequest();
    hr.open("GET", "prov1.py", true);
    hr.responseType = "JSON";
    hr.setRequestHeader("Content-Type", "application/json", true);
    hr.onreadystatechange = function() {
            if(hr.readyState == 4 && hr.status == 200) {
                    var data = JSON.parse(hr.responseText);
                        results.innerHTML = "";
                        for(var obj in data){
                                results.innerHTML += data[obj].id+" is "+data[obj].nombre+"<hr />";
                        }
            }
    }
    hr.send(null);
    results.innerHTML = "requesting...";
}
</script>
</head>
<body>
<div id="results"></div>
<script type="text/javascript">ajax_get_json();</script>
</body>
</html>

但不起作用 我设置 apache 来执行 python 脚本并使用非常简单的脚本,但是当我从数据库中检索数据时不起作用 如何在 html 页面中显示数据? 或者我可以使用什么语言或框架来显示数据 任何建议 生无可恋 提前致谢

【问题讨论】:

    标签: javascript python ajax json


    【解决方案1】:

    首先,您应该尝试在浏览器中访问您的 python 文件。如果您在页面上看不到 json 打印,则说明您的服务器或 python 代码存在问题。

    如果它有效,那可能是您的 Ajax 请求有问题。

    您可以使用 jQuery 或 zepto.js 来提供帮助。它们包含一个 Ajax 方法:$.ajax。

    您可以访问:http://zeptojs.com 并在页面上搜索“$.ajax”寻求帮助; )

    ================================================ ================

    试试这个:

    //var data = JSON.parse(hr.responseText);
    var data = JSON.parse(hr.response);
    

    ================================================ ================

    这是我的 onreadystatechange 函数代码,如果有帮助,请使用它:

    ajaxObject.onreadystatechange = function(){
        //console.info('[Ajax request process] url:' + url +'; readyState:' + ajaxObject.readyState + '; status:' + ajaxObject.status);
        if (ajaxObject.readyState == 4 && ((ajaxObject.status >= 200 && ajaxObject.status < 300) || ajaxObject.status == 304)){
            var result = null;
            switch (dataType){
                case 'text':
                    result = ajaxObject.responseText;
                    break;
                case 'xml':
                    result = ajaxObject.responseXML;
                    break;
                case 'json':
                default:
                    result = ajaxObject.response ? JSON.parse(ajaxObject.response) : null;
                    break;
            }
            if (typeof(success) == 'function'){
                success(result,url);
            }
        }else if (ajaxObject.readyState > 1 && !((ajaxObject.status >= 200 && ajaxObject.status < 300) || ajaxObject.status == 304)){
            console.warn('[Ajax request fail] url:' + url +'; readyState:' + ajaxObject.readyState + '; status:' + ajaxObject.status);
            if (typeof(error) === 'function' && errorCallbackCount == 0){error(url);errorCallbackCount++;}
            return false;
        }
    }
    

    【讨论】:

    • 好吧,我测试了 AJAX 代码并使用了一个简单的 json 文件,但是使用 python 脚本不起作用
    • @Joseleg 如果您直接在 chrome 等浏览器中访问您的 python 脚本会发生什么?
    猜你喜欢
    • 2014-05-22
    • 2021-12-19
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多