2010-12-15 8 views
0

私はXMLデータを返すAJAX呼び出しを作ってるんだ、これは私は「成功」機能(コールバック):このjavascript MAPオブジェクトのデータにアクセスするにはどうすればよいですか?

success: function (data) { 
     var $rowArray = $(data).find("[nodeName=z:row]"); 
      $rowArray.each(function(index) { // for each date put it into calMap. 
      calMap[$(this)[index].title] = $(this).attr("ows_Title"); 
      calMap[$(this)[index].date] = $(this).attr("ows_EventDate"); 
      }); 
     } 

calMapは、関数の外で宣言されたグローバルjavascriptオブジェクトです。

var calMap = {}; 

は、私は何をしたい、それはそのタイトルのためにcalMapを検索持って、私はタイトルに渡すことができます関数を作成し、見つかった場合は、特定のオブジェクトが返され、私はなるだろうそのオブジェクトのの日付プロパティにアクセスできます。

問題は、私がcalMapオブジェクトに挿入するデータにアクセスできないようです。まず、地図を印刷したいだけです。 evalを試してみました。アラートを試しました。calMap [0]アラートを試しましたcalMap [0] .title、何もありません。誰かがこれで私を助けることができますか?ありがとう!

アップデート: 私はこのような何かをしたい:

、日付が定義されているかどうか、私はチェックしましょう、それがあれば、私はその性質(すなわち データにアクセスします
var data = getData("myTitle"); 

function getData(title) { 
// if title is in calMap, something like this? 
var result = (calMap[title])); 
return result; // returns an object or NOTHING 
} 

。 。意味をなさないこと .date

ANSWER:? 私は、配列を使用して終了STILL Iは、オブジェクトのMAPを使用することができるはずだと思いますが、私のプロジェクトを成し遂げるために必要な

ここでfiがあります。配列アイテムにアクセスするコードのコードです。

function hasCalDate(code) 
{ 
    var matched = ""; 
    for (var f=0;f<calMap.length;f++){ 
     var re = new RegExp(code); 
     if (re.test(calMap[f].title)) 
     { 
     matched = calMap[f].title+','+calMap[f].date; 
     } 
    } 
return matched; 
}; 

ありがとうございます。

+0

最初にchromeまたはfirebugでconsole.log(calMap)を使用してみてください。 – kjy112

+0

ああ、コンソールは素晴らしかったです。私は、OBJECTSの配列を取得していたことが判明しました。 – tresstylez

答えて

0

:次に

var calMap = []; 

は、あなたのeach関数の中で、私はあなたがより

ような何かをしたい推測しています
+0

エメット氏に感謝します。しかし、配列の検索とオブジェクトの検索が効率が悪いと仮定しているので、私は直線アレイから離れていました。タイトルを見つけるために配列全体をループするのではなく、キーを使って地図にアクセスしてプロパティを取得するだけです。 – tresstylez

+0

@tresあなたの質問の終わり近くで、あなたは 'calmap [0]'と 'calMap [0] .title'(これは配列の構文です)に警告していると述べたので、私はあなたが配列を作成しようとしていたと推測しました。また、どのような種類のキーでプロパティにアクセスしたいのですか? – Emmett

+0

@ Emmet - うん、混乱のために申し訳ありません。私はちょうど別のものを試していましたが、間違いなく「オブジェクト」を使いたいと思っていました。私は言っている:calMap ['myTitle']と一致する特定のオブジェクトのcalMap.dateにアクセスする(存在する場合)。私は何をしたいのか私のポストを更新します...私には秒をください.. – tresstylez

0

あなたの問題は、success機能がAJAXリクエストが完了したときにのみ実行されることです。あなたがcalMapに安全にアクセスしたい場合は、のコールバックにする必要があります。あなたは配列(すなわち角括弧ではなく、縮れたもの)としてcalMapを初期化する必要があり

+0

私の成功関数は正常に動作します。それが行うのは、calMapを作成することだけです。その後、他の関数はそのデータにアクセスする必要があります。 – tresstylez

+0

@tresstylezはい、うまく動作しますが、非同期に実行されるため、メインスレッドの実行中に完了した時点を確認することはできません。コールバックが存在する理由は、要求が完了したときにのみ呼び出されるためです。 – mdarwi

+0

私はこの仮定が正しいとは思わない。メインスレッドはajax関数を呼び出し、配列/オブジェクトにデータが格納され、メインスレッドが配列(配列全体)にアクセスできました。私は各アイテムに個別にアクセスする方法を知りませんでした...私は自分のコードを更新します。 – tresstylez

関連する問題