这看起来是一个简单的问题,但我有一个编码员的心理障碍:
这个概念:
我输入一个 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(使用前将#替换为@)