• 締切済み

mixiアプリを作成しているのですが、idからニックネームが正しく取得

mixiアプリを作成しているのですが、idからニックネームが正しく取得できなくて困っています。 単体でなら取得できたのですが、以下のようにループ処理すると、正しく取得できないのです。 ちなみに、サーバからのデータ取得は正しくできています。 よろしくお願いします。 // サーバからデータ取得(サーバはIDの配列を返却します) gadgets.io.makeRequest(url,function(obj){   // 取得データから、IDの配列を取得   var objId = obj.data['id'];   // IDの数だけ繰り返す   for( var nCt = 0 ; nCt < objId.length ; ++nCt ){     //IDからプロフィールを取得     var targ = "/people/" + objId[nCt] + "/@self";     $.getData(targ,{},function(people){       var person = people[0]; //(a)       //ここでperson.nicknameをブラウザ上に出力してもobjId[nCt]のIDに該当するニックネームにならない       //ニックネーム以前にperson.idがobjId[nCt]と異なっているもよう     });   } },params);

みんなの回答

回答No.1

ループ処理を一部変更??(自信なし) // サーバからデータ取得(サーバはIDの配列を返却します) gadgets.io.makeRequest(url,function(obj){   // 取得データから、IDの配列を取得   var objId = obj.data['id'];   //IDの数だけ繰り返す   for( var nCt = 0 ; nCt < objId.length ; ++nCt ){     (function(id){// 追加     //IDからプロフィールを取得     var targ = "/people/" + id + "/@self";//変更objId[nCt] →id     $.getData(targ,{},function(people){       var person = people[0]; //(a)     });     })(objId[nCt]);// 追加   } },params);

関連するQ&A

  • ボタンのID名を取得するには?

    押されたボタンのid名を取得するにはどのように記述したらよいのでしょうか? <input type="button" value="ボタン" id="push" onClick="click(this)"> function click(obj) {  var getId = obj.elements.id; } 上記では取得できませんでした。 すみませんがお分かりの方いましたらよろしくお願いします。

  • ajaxで取得した配列の取り扱い

    こんにちは。 jqueryとphpを利用して、ajaxの練習をしているのですが、 受け取った配列の扱いではまってしまっています。 javascript.js $.ajax({ type : "post", url : "http://localhost/*****.php", data : post_data, datatype : "json", success :function(data,datatype){return_data(data);}, error : error_ajax(), }); php側では、受け取ったデータに応じて多次元配列を作り、jsonに変換してechoしています。 そして以下が成功時に実行する関数です。 function return_data(obj){ //配列topic以下を処理する関数 disp_topic(obj['topic']); //配列topic以下を処理する関数 dixp_tags(obj['tags']); } すると、obj['topic']が見つからないというエラーが出ます。 firebugsで見てみると、function return_dataの引数objには、jqueryがjsonからjavascriptのオブジェクトへ変換処理した配列が渡っているようです。。 引数objの値は以下のようになっていいます。 { "topic":  [{"tagno":"27","tags":"***"}], "tags":  [{"tagno":"27","tags":"****","count":"6"},   {"tagno":"29","tags":"****","count":"4"}, {"tagno":"1","tags":"****","count":"3"}, {"tagno":"9","tags":"****","count":"1"}] } 変数obj内のtopicに応じた配列と、tagsに応じた配列をそれぞれ取り出し、それぞれの関数で処理したいのですが、これを取り出すのにはどのようにしたらよいのでしょうか。 var array = obj['topic']; などと散々やってみたのですが、2日間解決できず・・・。 よろしくお願い申し上げます。

  • JavaScriptで配列を取得したい

    お世話になります。 データベースから取得したリスト(可変)をフォームに設定したところ、 JavaScriptで配列を参照したところ、リストが1件の場合はエラー、 3件の場合は正常という現象がおき、困っております。 リストが1件の場合でも、配列に認識させたいのですが、 他の箇所も記述が多いためシンプルな手法を探しています。 よろしくお願い致します。 3件のレコードの場合、正常に処理される。 ---- HTML内 -------------- <input type="checkbox" name="chk_sel"> <input type="checkbox" name="chk_sel"> <input type="checkbox" name="chk_sel"> ---- JavaScript内 -------------- function test(){ var obj = document.form1.chk_sel; if (obj != null) { for(i=0;i<obj.length;i++){ if(obj[i].checked == true){ check_num++; } } } } ----------------------------- ■1件のレコードの場合、エラーになる (配列に認識されないらしく、obj.lengthが取得できない) ---- HTML内 -------------- <input type="checkbox" name="chk_sel"> ---- JavaScript内 -------------- function test(){ var obj = document.form1.chk_sel; if (obj != null) { for(i=0;i<obj.length;i++){ if(obj[i].checked == true){ check_num++; } } } } -----------------------------

  • HTMLでのID

    <input type="checkbox" id="tohyokeka1" name="tohyokeka1" value="1"> <input type="checkbox" id="tohyokeka1" name="tohyokeka1" value="1"> <input type="checkbox" id="tohyokeka1" name="tohyokeka1" value="1"> という風にtohyokeka1というid="tohyokeka1"の配列を取得したいのですがどのように記述していいのかが分かりません。どなたか教えて頂けませんでしょうか? name="tohyokeka1" var formObj = document.getElementById("form"); var idObj = document.getElementById("tohyokeka1"); formObj.tohyokeka1.lengthや formObj.tohyokeka1[count]で、 name配列の数や配列が取得できるのですが、 idObjの配列の個数の取り方と配列の取得方法がわかりません。どなたかお願い致します。

  • クラスの中のクラスへのアクセス

    お世話になります。 クラスが以下のようにあります。 class ClassName1{ var $classname2_obj; // クラス「ClassName2」のオブジェクト function getClassName2Obj(){ return $this->$classname2_obj; } } class ClassName2{ var $array_list; // 配列です  function getArrayList(){ return $this->array_list; } } やりたいのは、ClassName1のgetClassName2Obj関数でClassName2の配列をgetArrayListで取得したいのです。 $a = new ClassName1; $b = $a->getClassName2Obj(); $c = $b->etArrayList(); 上の$b = … と$c = …の部分の処理を一行にまとめることはできないでしょうか? 何卒よろしくお願い致します。 PHPは5です。

    • ベストアンサー
    • PHP
  • タグ指定しないでタグのId取得する関数をNNでも動かしたい

    javaScriptを触り始めてまだ1週間の初心者です。 どうぞ熟練者の皆様、お知恵を貸して下さい。 「色々な種類のタグに指定されたIdから指定範囲("ABC"or"XYZ" + 000~999 の任意6文字)に当てはまるIdをHTMLファイルの前から順に取得し、それを配列にセットする」と言った関数を作りたいと思っています。 とりあえずIEではdocument.allを使用してそれらしく動いているのですが、これをNN環境でも動かしたいのです。NNで動くようにするにはどこに手を加えたら良いのでしょうか?それとも関数の作り自体変えるべきなのでしょうか? 良い解決策がありましたらお願いいたします。 該当部↓ var gArrayId = new Array(); function getSpanIDInfo() {  var intMaxNo = 0;  var intIndex = 0;  //配列宣言のため、まずは総数を調べる。  for ( var item in document.all ) {   // IDに"ABC"、"XYZ"を含むタグを見つける   if((item.indexOf("ABC") != -1) || (item.indexOf("XYZ") != -1)) {    intMaxNo = intMaxNo + 1;   }  }  //カウント終了したらその数でID情報配列作成  gArrayId = Array(intMaxNo - 1);  //作成した配列にIDを保存  for ( var item in document.all ) {   // "ABC"、"XYZ"を含むタグを見つける   if((item.indexOf("ABC") != -1) || (item.indexOf("XYZ") != -1)) {    // 見つけた順に保存    gArrayId[intIndex] = item.substring(0,7);    intIndex = intIndex + 1;   }  }  return intMaxNo; }

  • xmlから配列で取得したものを取り出したい

    as3初心者jpncan15といいます。 xmlから配列で取得したものをfunction外で取り出したいのですがどのようにすればいいのか悩んでいます。functionを調べたり配列を調べたり頭がかなり混乱中です。 お手数ですがご教授いただけますでしょうか? var ary:Array=new Array(); var ary_name:Array=new Array(); var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("b.xml"); var xml:XML; loader.load(request); loader.addEventListener(Event.COMPLETE , XMLload); function XMLload(e:Event):void { xml = XML(e.target.data); num_txt.text = xml.item.length(); //xml件数をテキストフィールドへ入れる for each(var element:Object in xml.item.thumb) //配列に入れる {ary.push(element);} for each(var element_name:Object in xml.item.name) //配列に入れる {ary_name.push(element_name); trace(element_name);}//出力OK } //function外で配列を使用したい trace(ary[5]); trace(ary_name[2]);

    • ベストアンサー
    • Flash
  • Ajax.Updaterで読み込んだ先の要素にイベントを設定したい

    Ajaxの勉強をしているのですが、非同期通信で要素を書き換えた後の処理について困っています。 現在、prototype.jsのAjax.Updaterを利用して下記のようなソースを書き、動作の検証を行っているのですが、読み込み元のファイル(test.1html)から読み込んだ先(test2.html)の要素を取得することは出来ても、その要素に対してイベントを設定することが出来ません。 具体的に言うと、 targ2の要素をクリックすると、test2.html内のtarg3の要素を取得出来てアラートが走りますが、targ3の要素をクリックしてもイベントが実行されないという状況です。 このtarg3の要素に対してイベントを設定するにはどのようにすれば良いでしょうか? ○test1.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Ajaxtest</title> <script src="prototype.js"></script> <script> window.onload=function(){ Event.observe('targ1', 'click', handler1); Event.observe('targ2', 'click', handler2); Event.observe('targ3', 'click', handler3); } function handler1() { var myajax = new Ajax.Updater(      {success : "targetString"},      "test2.html",      {evalScripts:true}); } function handler2() { alert($('targ3').innerHTML); } function handler3() { alert($('targ3').innerHTML); } </script> </head> <body> <div id="targ1">押して非同期通信開始</div> <div id="targ2">非同期通信終了後に押す</div> <div id="targetString"></div> </body> </html> ○test2.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Ajaxtest</title> </head> <body> <div id="targ3">非同期通信で呼ばれた要素</div> </body> </html>

    • ベストアンサー
    • AJAX
  • 配列からNULL以外のキーを取得したいのですが……

    配列からNULL以外のキーを取得したいです。 [0, 3]を期待しているのに、[0, 3: 3] で返ってきます。 なんででしょうか? function test(data) {  var result = [];  for (var i = 0, l = data.length; i < l; i++) {   if(data[i] !== null){    result[i] = i;   }  }  return result; } var data = ["1", null, null, "5"]; var last = test(data); console.log(last); ・console.logだから? ・もしそうなら、どうして[ 0: 1, 3: 3] ではないのでしょうか?

  • javascriptでlabelの値取得

    vs2012(c#)で <asp:Label ID="test" runat="server" Text="abc" Visible="true"></asp:Label> の値をjavascriptで取得したいのですが、下記で実行すると l1はnullになり取得できません。 var l1 = document.getElementById("test"); var data = l1.innerText; console.log(data); そのようにすれば取得できるでしょうか