Ruby on RailsでJSONを使用し、さらにJavascriptでvar_dumpの例を使用する

この記事では、%username%でJSONを操作する方法と、デバッグ用のjavascript変数をダンプする方法を説明します。

まず、少しの理論。 そして、 ウィキペディアから取られた定義に基づいています。
JSONは、JavaScriptに基づくテキストベースのデータ交換形式であり、この言語で一般的に使用されます。 他の多くのテキスト形式と同様に、JSONは人々が読みやすいものです。

私は個人的にRuby言語、特にRuby on Railsフレームワークの偶像崇拝者であるため、サーバー部分の例を説明します。 原則はすべての言語で同じですが、他の言語のファンは問題なく理解できると思います。

サーバー側では、次のように記述します。
 def MyController < ApplicationController def give_me_json data = Model.find(params[:id]) # ,      text/plain response.headers['Content-type'] = "text/plain; charset=utf-8" render :text => data.to_json end end 

クライアントでJavaScriptを実行します(注意、 プロトタイプライブラリの接続を忘れないでください)。
 new Ajax.Request('/MyController/give_me_json', { asynchronous:true, evalScripts:true, onComplete:function(request) { var x = eval('(' + request.responseText + ')'); alert(var_dump(x)); }, }) 

または、次のようにRuby on Railsで実行できます。
 <%= remote_function(:complete => "var x = eval('(' + request.responseText + ')'); alert(var_dump(x));", :url => { :action => 'give_me_json', :id => link.id }) %> 

var_dumpの場合は、もちろん、アラートを使用せずに、たとえば<div id='debug_element'></div>$('debug_element').innerHtml = var_dump(object);出力することをお$('debug_element').innerHtml = var_dump(object);

変数情報をJavaScriptにダンプするための関数はたくさんあります。 ここで見た機能を使用することを好みます 。 おそらく最もエレガントなオプションではないかもしれませんが、それは私に合っています。 彼女のコードは次のとおりです。
 function var_dump(arr,level) { var dumped_text = ""; if(!level) level = 0; //The padding given at the beginning of the line. var level_padding = ""; for(var j=0;j<level+1;j++) level_padding += " "; if(typeof(arr) == 'object') { //Array/Hashes/Objects for(var item in arr) { var value = arr[item]; if(typeof(value) == 'object') { //If it is an array, dumped_text += level_padding + "'" + item + "' ...\n"; dumped_text += var_dump(value,level+1); } else { dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n"; } } } else { //Stings/Chars/Numbers etc. dumped_text = "===>"+arr+"<===("+typeof(arr)+")"; } return dumped_text; } 

以上です。 最後に、JSONによって生成される行は、コントローラーを作成して動的JavaScriptaを生成するよりもはるかにコンパクトでエレガントです 。 または、Ajax.Updaterを介して、HTMLタグが既に配置された完成したページを提供してください。

Source: https://habr.com/ru/post/J51768/


All Articles