首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过调用带有参数的URL来获取json对象

问通过调用带有参数的URL来获取json对象
EN

Stack Overflow用户
提问于 2011-03-14 05:55:33
回答 2查看 17.9K关注 0票数 4

这似乎是一个简单的问题,但我有一个编码器的思维障碍:

的概念:

我输入一个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...anything处理此场景的适当/最佳方法是什么?

多谢各位!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-18 04:09:10

使用jquery解析URL,在创建json对象之前将其插入到<script>标记中。从链接到LekisS

代码语言:javascript
复制
$.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&para2=value2来获取json对象。

票数 2
EN

Stack Overflow用户

发布于 2011-03-14 07:22:04

你有几个选择

1)在javascript中生成json

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

代码语言:javascript
复制
<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的方式提供它们(在您的例子中,so/getStuff/曾傑瑞/engineer/12345)。其他人使用更传统的/函数/?argName=argVal.接近。有了参数之后,以JSON格式(http://php.net/manual/en/book.json.php)将它们写入页面是一件小事。

决策,决策

就我个人而言,我会使用MVC方法,因为它需要最少的时间来获得您想要的JSON。但是,除非您熟悉MVC框架(如蛋糕),否则您可能会发现起来和运行的过程有点困难--这些框架是为服务页面内容而设计的,并让它们服务于JSON并不总是有明确的文档记录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5295236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档