0

首先,我对 Web 开发世界很陌生,如果这个问题过于简单,我很抱歉。我正在尝试使用 python 来处理 AJAX 请求。从阅读文档看来,Dojo/request 似乎应该能够以我的形式做到这一点,但是我没有找到任何示例来帮助它工作。

假设我有一个 Python 文件 (myFuncs.py),其中包含一些返回我想从服务器获取的 JSON 数据的函数。对于此调用,我对此文件中的特定函数感兴趣:

def sayhello():
   return simplejson.dumps({'message':'Hello from python world'})

我不清楚的是如何使用 Dojo/request 调用这个函数。文档建议是这样的:

require(["dojo/dom", "dojo/request", "dojo/json", "dojo/domReady!"],
    function(dom, request, JSON){
        // Results will be displayed in resultDiv
        var resultDiv = dom.byId("resultDiv");

        // Request the JSON data from the server
        request.get("../myFuncs.py", {
            // Parse data from JSON to a JavaScript object
            handleAs: "json"
        }).then(function(data){
            // Display the data sent from the server
            resultDiv.innerHTML = data.message
        },
        function(error){
            // Display the error returned
            resultDiv.innerHTML = error;
        });
    }
);

这甚至接近我想要实现的目标吗?我不明白如何指定在 myFuncs.py 中调用哪个函数?

4

1 回答 1

1

您还可以做的是创建一个小型 jsonrpc 服务器并使用 dojo 对该服务器进行 ajax 调用并获取 json 数据......

对于python方面,你可以按照这个

jsonrpclib

对于dojo,您可以尝试这样的事情..

<script>
    require(['dojox/rpc/Service','dojox/rpc/JsonRPC'],
    function(Service,JsonRpc)
    {       
        function refreshContent(){
            var methodParams = {
                envelope: "JSON-RPC-2.0",
                transport: "POST",
                target: "/jsonrpc",
                contentType: "application/json-rpc",
                services:{}
            };

            methodParams.services['myfunction'] = { parameters: [] };
            service = new Service(methodParams);

            function getjson(){
                dojo.xhrGet({
                    url: "/jsonrpc",
                    load : function(){
                        var data_list = [];
                        service.myfunction().then(
                            function(data){
                                dojo.forEach(data, function(dat){
                                    data_list.push(dat);                                            
                                });
                                console.log(data_list)
                            },
                            function(error) {
                                console.log(error);
                            }
                        );
                    }
                });
            }           
            getjson();
        }       
        refreshContent();
        });                             
    });     
</script>

我已经在 django 中使用了这种方法,我没有为 rpc 调用创建不同的服务器,而是使用 django 的 url 链接将调用转发到我的函数。但是你总是可以创建一个小的 rpc 服务器来做同样的事情。

于 2013-07-25T09:49:50.900 回答