私はグローバル変数の代わりに頭を抱えています。グローバル変数の代わりに?
ケースは、1つのXMLで値を見つけて別のXML(またはそれ以上)と比較する必要があるケースです。 XML JQuery自体は関数であり、その下の演算は関数内部の関数です(ugh).2つの関数から値を取得して全体的に使用することはできません。
私は現在、1つのファイルからXML値を取得し、別のXMLファイルをフィルタリングすることはできません。それは助けが必要な場所です。
私は3つのXMLファイルを手渡しました。
ファイル1 - categories.xmlは - カテゴリ 元...
<CAT>
<OA1>True</OA1>
<OA2>False</OA2>
<OA3>True</OA3>
<EP1>True</EP1>
<EP2>False</EP2>
<EP3>False</EP3>
</CAT>
ファイル2 = oa.xmlのマッピングが含まれています - 各OA記録 元の値が含まれています...
<OA>
<Name>Name 1</Name>
<City>City</City>
<State>ST</State>
</OA>
のように...
ファイルは3 = EP.xml - 目が含まれています各EPレコードのE値は ソースコードのコピー
<EP>
<object 1></object1>
<object 2></object2>
<object 3></object3>
</EP>
は今、私は私が始めたとき、私は何ができると思ったことは、ユーザがカテゴリを選択できるようにし、その選択戻ったときにその値を含む2つのテーブルをベースそのカテゴリにマッピングされます。
私の問題は、JQueryがXMLの解析を開始するときに、関数内で(それは私が見たすべての例で)それを行うので、変数を1つの関数内に設定して次の関数2番目のファイルを開くために使用されます。ここで
は、私が今持っているものです: ソースコードのコピー
<script>
var catid = ""; // I thought this, being outside of the function would be a global varaible
OA1 = ""; // I tried it with and without var in front
var OAid = "";
$(document).ready(function(){ //When opening an XML we do it in a function
$.ajax({
type: "GET",
url: "xml/categories.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('Cat').each(function(){
//Next 2 rows don't matter b/c I can't use their values outside
//of the function
var catid = $(this).find('Catid').text();
var OA1 = $(this).find('OA1').text();
$('<div class="page-wrap"></div>').html('<table><tr><td>' + catid +'</td><td>OA1 '+ OA1 +'</td></tr></table></div>').appendTo('#page-wrap');
});
}
});
});
//The only way I know how to open up the next XML, start all over again
$(document).ready(function(){
$.ajax({
type: "GET",
url: "xml/OA.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('OAData').each(function(){
var OAid = $(this).find('OAid').text();
$('<div class="page-wrap"></div>').html('<table><tr><td>OA ID is '+ OAid +'</td></tr></table></div>').appendTo('#page-wrap');
});
}
});
});
</script>
//Somebody shoot me
ANYアドバイスが最も高く評価されるだろう - 私もB/C変数問題の比較操作を考慮することができていません。
2つのXMLファイルを比較する方法はありますか?それとも不足していますか、または一時的な場所を使用して解決策をお勧めできますか?
2つ目の '$ .ajax'を最初のコールバックの中に移動するだけで、2つの変数にアクセスできます。 –
グローバル変数の代わりに、data()メソッドhttp://api.jquery.com/jQuery.data/をお勧めします。 – Johan