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

标签 javascript jquery json model-view-controller

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

概念:

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

我不想取回网页或其他东西,而是取回一个 json 对象,以便我可以在不同的页面上进行解析。

要点:

我当然可以通过使用这些参数调用 MVC Controller 并返回一个 json 对象来完成此操作。但是,假设我需要在一个 js 文件中创建这个 json 对象,该文件从 URL 中获取这些参数的值,然后我得到我的 json 作为结果。

问题

我可以给一个js文件传递参数,返回一个json对象吗?或者 我可以从 Controller 调用一个 js 文件并将这些参数传递给它并检索一个 json 对象吗?
我什至需要通过 URL 调用 Controller ,还是我可以只调用一个 js 文件,从 URL 给它参数,然后返回 json?

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

非常感谢你们!

最佳答案

你有几个选择

1) 在javascript中生成json

为此,您需要创建一个包含 javascript JSON 编码器(例如 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) 写入页面是一件微不足道的事情。

决定,决定

就个人而言,我会使用 MVC 方法,因为它需要最少的运行来获取您想要的 JSON。然而,除非您熟悉 MVC 框架(例如 cake),否则您可能会发现启动和运行的过程有点费力——这些框架设计用于提供页面内容并且让它们提供 JSON 并不总是清楚地记录在案。

关于javascript - 通过调用带参数的 URL 获取 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295236/

相关文章:

javascript - 在 javascript 中解析 XML - 没有浏览器 - 没有 XML 解析器

javascript - jquery UI 不会在新的 DOM 元素上执行

javascript - jquery-1.4.1.min.js 和 jquery-1.4.1.js 之间的区别

javascript - 我的 HTML 文件无法使用加载函数(jquery)加载另一个文件

php - 如何通过同时提供 INDEX 将值分配给 JSON

json - 在 Ember.js 中使用 RESTAdapter 使用 JSON API 的简单方法是什么?

json - 通过 HTTP 转 JSON RPC v2

JavaScript 类 : storing variables in constructor vs get methods

javascript - 将 Promise 分配给变量,而不是结果或执行的 Promise?

javascript - 纯 CSS 方法在显示 :table element? 内保持图像比例