这似乎是一个简单的问题,但我有一个编码器的思维障碍:
的概念:
我输入一个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处理此场景的适当/最佳方法是什么?
多谢各位!
发布于 2011-03-18 04:09:10
使用jquery解析URL,在创建json对象之前将其插入到<script>标记中。从链接到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¶2=value2来获取json对象。
发布于 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.“来调用。例如:
<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并不总是有明确的文档记录。
https://stackoverflow.com/questions/5295236
复制相似问题