通过调用带参数的URL获取json对象

2023-12-26

这看起来是一个简单的问题,但我有一个编码员的心理障碍:

这个概念:

我输入一个 URL,即 - www.mysite.com/getStuff?name=Jerry&ocupation=Engineer&Id=12345

我不想返回网页或其他内容,而是想返回 json 对象,以便可以在不同的页面上进行解析。

要点:

我当然可以通过使用这些参数调用 MVC 控制器并返回 json 对象来完成此任务。然而,假设我需要在 js 文件中创建这个 json 对象,该文件从 URL 中获取这些参数的值,然后我将 json 作为结果返回。

问题

我可以将参数传递给js文件并返回json对象吗?或者 我可以从控制器调用 js 文件并将这些参数传递给它并检索 json 对象吗?
我是否需要通过 URL 调用控制器,或者我可以只调用 js 文件,从 URL 中为其提供参数,然后返回 json?

使用 MVC、js、jquery...处理这种情况的正确/最佳方法是什么?

非常感谢大家!


你有几个选择

1)在javascript中生成json

为此,您需要创建一个简单的页面,其中包含 javascript JSON 编码器(例如https://github.com/douglascrockford/JSON-js https://github.com/douglascrockford/JSON-js)。这将托管在“/getStuff/index.html”,并通过键入“www.mysite.com/getStuff/?arg=val...”来调用,例如:

<html>
    <head>
        <script src="json.js" type="text/javascript"></script>
        <script type="text/javascript">
                    //this function will take the window.location.search string of ?name=val and
                    //create an object like {'name':'val'}
            var parseUrl = function(urlParams) {
                var retObj = {};
                var urlParameters = null;

                if (!urlParams || urlParams.length == 0) {return retObj}
                if (urlParams.charAt(0) == '?') {
                    urlParameters = urlParams.substring(1);
                }else {
                    urlParameters = urlParams;
                }
                if (urlParameters.length == 0) {return retObj}
                var parameterPairs = urlParameters.split('&');
                var x;
                for (x in parameterPairs) {
                    var parameterPair = parameterPairs[x];
                    parameterPair = parameterPair.split('=');
                    retObj[parameterPair[0]] = parameterPair[1];
                }
                return retObj;
            };
            var createJson = function(){
                var params = parseUrl(window.location.search);
                //do work here
                var retObj = {}; //suppose this is the result of the work
                document.print(JSON.stringify(retObj)); //use the included JSON encoder
            };
        </script>
    </head>
    <body onload="createJson();">
    </body>
</html>

2)使用MVC框架

现有的每个 MVC 框架都将允许您访问页面请求中使用的搜索参数。有些会要求您以 /function/arg1/arg2 样式提供它们(在您的情况下是 /getStuff/jerry/engineer/12345 )。其他人使用更传统的 /function/?argName=argVal... 方法。一旦有了参数,将它们以 JSON 格式写入页面就很简单了(http://php.net/manual/en/book.json.php http://php.net/manual/en/book.json.php).

决定,决定

就我个人而言,我会使用 MVC 方法,因为它需要最少的运行才能获得您想要的 JSON。但是,除非您熟悉 MVC 框架(例如 cake),否则您可能会发现启动和运行的过程有点困难 - 这些框架是为提供页面内容而设计的,但并不总是让它们提供 JSON明确记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过调用带参数的URL获取json对象 的相关文章

随机推荐