2011-03-14 12 views
4

でURLを呼び出すことにより、JSONオブジェクトを取得します。これは単純な問題のように思えるが、私はコーダーのメンタルブロックを持っている:パラメータ

コンセプト:

私はすなわち、URLを入力 - www.mysite。 COM/getStuff?名前=ジェリー&職業=エンジニア& ID = 12345

との代わりに、Webページまたは私は別のページに解析できるようにJSONオブジェクトを取り戻すしたい何かを取り戻します。

キャッチ:

私は確かにこれらのパラメータでMVCコントローラを呼び出し、JSONオブジェクトを返すことによって、これを達成することができます。しかし、このjsonオブジェクトをURLからこれらのパラメータの値をとるjsファイル内に作成する必要があるとしましょう。結果として私のjsonを戻します。

質問

私はJSファイルにパラメータを渡すと、JSONオブジェクトを返すことはできますか?または コントローラからjsファイルを呼び出し、jsonオブジェクトにこれらのパラメータを渡して取得できますか?
URLを介してコントローラを呼び出す必要がありますか、またはjsファイルを呼び出してURLからパラメータを渡してjsonを返すことはできますか?

MVC、js、jquery ...と何がこのシナリオを処理する適切な/最良の方法は何ですか?

ありがとうございます!

+0

JSONオブジェクトを返すことができる限り、必要なファイルを呼び出すことができます。 Javascriptの唯一の問題はURLから値を取得することです。 PHPが$ _GETを必要とする場所でGET関数を書く必要があります。 –

+0

あなたが習得しようとしていることを理解することは難しいです。 –

+0

@ LekisS、ありがとう私はあなたが言っていることを見ています。 @TheSuperTramp、わからないことを理解するのは難しいです。なぜなら、意味が分からない理由を説明しなかったからです。なぜなら、私が達成しようとしていることは、タイトルと本文。おそらく、「方法」と「理由」は不明ですが、あなたを助けるために「理解できません」以上のものが必要です。 – EKet

答えて

2

jsonを使用して、jsonオブジェクトを作成する前に、これを<script>タグに挿入して解析します。 linkから別のスクリプトタグで

$.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'); 

LekisS

からは、あなたのJSONオブジェクトを作成します。オブジェクトをJSONに変換するには、 Json2.jsプラグインを含める必要があります。 JSONオブジェクト作成の前にもこのスクリプトを含めてください。

適切なスクリプトと変数を取得したら、必要に応じてこれらのパラメータを使用してjsonオブジェクトを作成することができます.jsonを使用して、例の最後に示すように呼び出します。また、Json2.jsスクリプトファイルからJSON変換(文字列またはオブジェクト)を検索することもできます。

ここではたくさんのスクリプトがありますが、URL呼び出しでjsonオブジェクトを取得する場所はどこですか?

だから答えは簡単です:

は、最後のスクリプトが最終的に作成し、JSONを返すこれらのスクリプトで簡単なHTMLページを作成します。サーバーにアップロードし、

www.mysite.com/getStuff?para1=value&para2=value2などのURLパラメータを使用してjsonオブジェクトを取得します。

2

あなたはオプション

1のカップルを持っている)あなたは、このようなhttps://github.com/douglascrockford/JSON-jsなどのJavaScript JSONエンコーダを()が含まれ、単純なページを作成する必要がありますこれを行うには、JavaScriptで

JSONを生成します。これは、例えば「... www.mysite.com/getStuff/?arg=valを」「/getStuff/index.html」でホストされるだろうと入力することで呼び出されます:

<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)でそれらを提供する必要があります。他のものはより伝統的な/関数/?argName = argVal ...アプローチを使用します。引数を取得したら、JSON形式(http://php.net/manual/en/book.json.php)でページに書き込むことは簡単です。

決定、個人的に決定

それはあなたがしたいJSONを取得するために走り回っ以上を必要として、私は、MVCの方法を使用します。しかし、あなたがMVCフレームワーク(ケーキなど)に精通していなければ、多分、ちょっと難しくなるプロセスを見つけるでしょう。これらのフレームワークはページコンテンツを提供し、JSONを提供するように設計されています明確に文書化されている。

+0

組織的な説明をしてくれてありがとうございました。私は、LekisSのコメントで述べたように、URLパラメータのjqueryパーサーがもっと好きで、私はこれを使ったと言わなければなりません。それはずっときれいだ。しかし、あなたのスクリプトとURL解析のアプローチは素晴らしいです。私はすべてがクライアント側で行われているのでMVCを使用して個人的にそれを好む、私はすべてのサーバーに行く必要はなかった、それは重要なデータではありません。しかし、LekisSはこのアプローチを事前にコメントしています。どうもありがとう。 – EKet