Получить объект json, вызвав URL с параметрами - PullRequest
4 голосов
/ 14 марта 2011

Это кажется простой проблемой, но у меня есть ментальный блок кодера:

Концепция:

Я набираю URL, т.е. - www.mysite.com/getStuff?name=Jerry&occupation=Engineer&Id=12345

и вместо того, чтобы возвращать веб-страницу или что-то еще, я хочу вернуть объект json, чтобы я мог проанализировать на другой странице.

Улов:

Конечно, я могу добиться этого, вызывая контроллер MVC с этими параметрами и возвращая объект json. Однако, скажем, мне нужно создать этот объект json внутри файла js, который берет значения этих параметров из URL, и в результате я получаю свой json обратно.

Вопросы

Можно ли передать параметры в файл js и вернуть объект json? Или же Можно ли вызвать файл js из контроллера и передать ему эти параметры и получить объект json?
Нужно ли мне даже вызывать контроллер через URL-адрес или я могу просто вызвать js-файл, задав ему параметры из URL-адреса и затем возвратив json?

Как правильно / лучше всего справиться с этим сценарием, с MVC, js, jquery ... что-нибудь ??

Большое спасибо, ребята!

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Используйте jquery для анализа URL-адреса, вставив его в тег <script> перед созданием объекта json. от ссылка от 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. Вы также можете посмотреть, какое преобразование JSON (например, в строку или объект) вы хотите из файла сценария Json2.js.

Теперь у нас есть все внутри набора скриптов, но где мы получаем объект json через URL-вызов?

Так что ответ прост:

Создайте простую HTML-страницу с этими сценариями, где последний сценарий, наконец, создает и возвращает json. Загрузите на сервер и используйте параметры URL, такие как

www.mysite.com/getStuff?para1=value&para2=value2 чтобы получить объект json.

2 голосов
/ 14 марта 2011

У вас есть несколько вариантов

1) Генерация JSON в 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 (например, в вашем случае / getStuff / jerry / engineer / 12345). Другие используют более традиционный подход / function /? ArgName = argVal .... Если у вас есть аргументы, записать их на странице в формате JSON - тривиально (http://php.net/manual/en/book.json.php).

Решения, Решения

Лично я бы использовал метод MVC, так как он требует меньше всего бега, чтобы получить желаемый JSON. Однако, если вы не знакомы с инфраструктурой MVC (такой как торт), вы, вероятно, обнаружите, что процесс установки и запуска будет немного трудным - эти инфраструктуры предназначены для обслуживания содержимого страницы, и не всегда можно заставить их обслуживать JSON. четко задокументировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...