2012-03-12 14 views
0

私は、JSONオブジェクトを呼び出すことだし、Firebugのでは、この応答を返します。JSONデータオブジェクトのデータを選択する最も良い方法は何ですか?

"[{\"employee\":{\"account_id\":1,\"active\":true,\"activity_ical_hash\":\"af2d0f784ce28bc16d6fdf593d3e4bc7\",\"address\":null,\"admin\":false,\"all_tasks_ical_hash\":\"d4067eceea22b2f281c65f22ccc7820f\",\"always_send_daily_schedule\":true,\"api_token\":\"8d4ab012505392a25d1469e33945d9b05365eedb\",\"can_login\":true,\"cell_phone\":null,\"city\":null,\"created_at\":\"2012-02-20T09:41:27-08:00\",\"custom_datetime1\":null,\"custom_datetime10\":null,\"custom_datetime2\":null,\"custom_datetime3\":null,\"custom_datetime4\":null,\"custom_datetime5\":null,\"custom_datetime6\":null,\"custom_datetime7\":null,\"custom_datetime8\":null,\"custom_datetime9\":null,\"custom_number1\":null,\"custom_number10\":null,\"custom_number2\":null,\"custom_number3\":null,\"custom_number4\":null,\"custom_number5\":null,\"custom_number6\":null,\"custom_number7\":null,\"custom_number8\":null,\"custom_number9\":null,\"custom_text1\":null,\"custom_text10\":null,\"custom_text2\":null,\"custom_text3\":null,\"custom_text4\":null,\"custom_text5\":null,\"custom_text6\":null,\"custom_text7\":null,\"custom_text8\":null,\"custom_text9\":null,\"email_address\":\"[email protected]\",\"email_schedule_daily\":true,\"employee_number\":4,\"hashed_password\":\"cbc689313dfd6fd144f7df117c4f18e1627afde4\",\"hide_pricing\":null,\"home_phone\":null,\"id\":4,\"is_account_owner\":false,\"jobs_ical_hash\":\"d51abd7af0326083f9d25c4aacc828c0\",\"limit_access_to_assignments\":false,\"name\":\"Horacio Johnson\",\"notification_email_address\":\"[email protected]\",\"notification_mobile_host\":null,\"notification_mobile_number\":null,\"notify_on_tasks\":true,\"notify_on_tasks_by_sms\":true,\"notify_via_email\":true,\"notify_via_mobile\":false,\"pager\":null,\"public_tasks_ical_hash\":\"592b2d4150ef46821c2ae8df63ca686d\",\"remember_me_token\":null,\"remember_me_token_expires_at\":null,\"salt\":\"35f1a3c4\",\"show_setup_tab\":null,\"state\":null,\"tech\":true,\"updated_at\":\"2012-02-20T09:41:27-08:00\",\"username\":\"user_marguerite\",\"zip_code\":null}}]" 

各返された要素でname属性を返すために必要とされるであろうどのような構文?

私はこれを試してみましたが、それはこれが動作しない理由を

$.getJSON(window.location.pathname+'.json?employees='+$("input").attr('value'), function(data){ 

      $available_names = [] 
       $.each(data, function(i, val) { 
       $name = val.name; 
       $available_names.push($name); 
       }); 

}); 

誰もが知っている動作しませんでしたか?

更新このメソッドにエラーハンドラを追加しようとし

、これはさえ実行されません。これは、いくつかの構文上の理由で失敗した:あなたのJSONの構造から判断

$.getJSON(window.location.pathname+'.json?employees='+$("input").attr('value'), function(data){ 

}).error(function() { alert("error"); }); 
+0

エラーが発生しましたか?あなたは行方不明です。 $ available_names = [] –

+0

の最後にはありません。私はまた、簡単な警告を出そうとしており、 'undefined'を返します。 – Trip

+0

これをgetJSON呼び出しの最後に追加し、何かがあるかどうかを確認してください:.error(function(){alert( "error");}) –

答えて

1

あなたのデータは、アレイ構造です。まるでそれが従業員オブジェクトの配列であるかのように見えます。

各従業員の名前を取得するには、各オブジェクトのemployeeプロパティにアクセスする必要があります。

$.each(data, function(i, val) { 
    $name = val.employee.name; 
    $avaiable_names.push($name); 
    }); 

...しかし、あなたはアレイを構築している場合、それはまだかどうかを確認するためにチェックし、機能していない場合、あなたは...

var $avaiable_names = $.map(data, function(val, i) { 
     return val.employee.name; 
    }); 

代わり$.mapを使用することができますJSONは二重にエンコードされています。そのFirebugの出力には、私がそうであると思うようになる何かがあります。

あなたはそれが動作を開始した場合、それは間違いなく二重のサーバー上でエンコードされているので、修正したいと思います

data = $.parseJSON(data); 

...このように、応答が再び解析されたことで、これをテストすることができますそれ。

+0

だから、私は完全にこれがうまくいくと思った。しかし、何も起こりません。 – Trip

+0

@Trip:私が追加した私の答えの一番下の部分を調べてください。 Firebugの出力は、応答が二重にエンコードされているように見えます。 '$ .parseJSON'行を試してください。もしそれがクリアされたら、サーバ側で修正したいでしょう。 –

+0

二重構文解析に関して.. 'jがnullです 'というエラーが出ます。ダブルパースされていないと思ってしまいます。それは単にFirebugを文字列に変換するだけです。 – Trip

1

これを行うことがしたいん:

$name = val.employee.name 
関連する問題