2011-07-08 4 views
6

私は、キーがURLで値が整数のルビーハッシュを持っています。ハッシュをJSONに変換して、AJAXリクエストでJSONをURL内に送信し、JSONをparamsハッシュから取得できるかどうかを確認します。JSONをURLで送信できますか?

また、JSONifyedルビーハッシュをクライアントに送り返します。 data変数のデータを受け取るAJAX関数で成功したコールバックがある場合、そのJSONをJQueryで解析するにはどうすればよいですか?

具体的にする必要がある場合はお知らせください。

+0

JSONをURLの一部として送信するのではなく、AJAXリクエストをPOSTするのはなぜでしょうか。 – Endophage

+0

@Endophageこれを行うと、サーバーからJSONにどのようにアクセスできますか? –

答えて

10

はい、問題はありません。手動のエンコーディング/デコードは必要ありません!

あなたのコードは次のようになります:

var jsonParam = '{"name":"Edgar"}'; //Sample json param 
$.ajax({ 
    ... 
    type: "get", //This sends in url 
    data: {jsonParam: jsonParam}, //This will encode your json for url automatically 
    dataType: "json", //With this the response will be automatically json-decoded! 
    success: function(response){ //Assuming your server output was '{"lastName":"Villegas"}' as string 
    alert(response.lastName); 
    } 
}); 

あなたが見ることができるように、手動のエンコーディング/デコーディングは必要なかったです。 Jqueryはそれをすべて処理します。

これが役に立ちます。あなたがjsonを手動でエンコード/デコードする必要がある場合は、javascriptのencodeURIComponent(string)$.parseJSON(jsonString)メソッドを使用する必要があります。

+0

待つので、 'dataType:" json "'を指定することで、サーバー上のJSONを解析する必要はありませんか? (例:JSON.parse(json_here))。また、代わりにPOSTリクエストとして送信することにした場合、Rubyのサーバー上でJSONにアクセスするにはどうすればよいですか? –

1

はい、jsonオブジェクトをgetまたはpostパラメータとして渡すことができます。

jqueryを使用してjson文字列を解析するには、$ .parseJSONを使用できます。

+0

私はURLそのものを意味しました。しかし、私がそれをPOSTして 'data'オプションで送ると、コントローラからどのようにアクセスするのですか? –

+0

これはサーバー側のコードによって異なります。例えばC#ではRequest [elementName]を使うことができます。コントローラのアクションでは、アクションが実行されるときに自動的に設定される正確なパラメータ名を指定することができます。 – ShankarSangoli

+0

@ShankarSangoliこれはうまくいきますが、get/queryパラメータでJSONオブジェクトを渡すのは良い方法ですか? – Nitin

関連する問題