【问题标题】:Get json object by calling a URL with parameters通过带参数调用URL获取json对象
【发布时间】:2011-07-14 19:01:51
【问题描述】:

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

概念:

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

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

问题:

我当然可以通过调用带有这些参数的 MVC 控制器并返回一个 json 对象来实现这一点。但是,假设我需要在一个 js 文件中创建这个 json 对象,该文件从 URL 中获取这些参数的值,然后我得到我的 json 作为结果。

问题

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

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

非常感谢大家!

【问题讨论】:

  • 只要能返回一个JSON对象,就可以调用你想要的文件。 Javascript 的唯一问题是从 URL 中获取值。您需要编写一个 GET 函数来将它们放在 PHP 只需要 $_GET 的地方。
  • 很难理解你想要达到的目标..
  • @LekisS,谢谢,我明白你在说什么。 @TheSuperTramp,很难理解你不理解的东西,因为你没有解释什么没有意义以及为什么......因为清楚地,我想要达到的目标在标题和正文中明确说明.也许“如何”和“为什么”不清楚,但我需要的不仅仅是“我不明白”来帮助你。
  • @EKet:你同意我的回答吗?还是您需要额外的信息?
  • @LekisS:是的,我理解你所说的概念,js 没有 get 方法,所以我必须为我的参数解析 url。但我不确定我将如何实际调用我想要在实践中获取我的 json 对象的文件。我只是在网址中调用它吗?一个例子将受到赞赏或一些详细说明。非常感谢!

标签: javascript jquery json model-view-controller


【解决方案1】:

你有几个选择

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清楚地记录在案。

【讨论】:

  • 非常感谢有条理的解释,我们很少有这个了。我不得不说我更喜欢 LekisS 在 cmets 中提到的用于 url 参数的 jquery 解析器,我使用了它。它干净了很多。但是您使用脚本和 url 解析的方法很棒。我个人更喜欢使用 MVC,因为一切都在客户端完成,我根本不需要去服务器,这不是重要的数据。但是 LekisS 之前评论过这种方法,等着看他是否为了公平起见而发布答案。非常感谢。
【解决方案2】:

在创建 json 对象之前,使用 jquery 将其插入到 &lt;script&gt; 标记中来解析 URL。来自link来自 LekisS

$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

// Get object of URL parameters
var allVars = $.getUrlVars();

// Getting URL var by its nam
var byName = $.getUrlVar('name');

在一个单独的脚本标签中创建你的 json 对象。您需要包含 Json2.js 插件才能将对象转换为 JSON。所以在创建 JSON 对象之前也要包含这个脚本。

一旦您拥有适当的脚本和变量,您就可以根据需要使用这些参数创建一个 json 对象,方法是调用它们,如使用 jquery 的示例底部所示。您还可以从 Json2.js 脚本文件中查找您想要的 JSON 转换(即到字符串或对象)。

现在我们拥有了一堆脚本中的所有内容,但是我们在哪里可以通过 URL 调用获取 json 对象呢?

所以答案很简单:

使用这些脚本创建一个简单的 html 页面,最后一个脚本最终创建并返回 json。上传到服务器并使用 URL 参数,如

www.mysite.com/getStuff?para1=value&amp;para2=value2获取json对象。

【讨论】:

    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2020-08-15
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多