0

私はオートコンプリートXMLデータ解析の問題に取り組んでいます。autocomplete(external xml data)は、属性を別々のフィールドに分割します。

ユーザーが検索クエリとして「ラベル」を使用して検索すると、各要素の属性が分割されるようにしようとしています。

たとえば、 "Dubrovnik"が検索され、オプションが選択されます。 選択された選択項目内の属性は分割され、フォームに入力されます。

Javascript 注:tjq = jQuery.noConflict();

tjq(function() { 

    var myArr = []; 

    tjq.ajax({ 
     type: "GET", 
     url: "http://www.thetravelosophy.co.uk/images/www.thetravelosophy.co.uk/1/js/Destinations1.xml", 
     dataType: "xml", 
     success: parseXml, 
     complete: setupAC, 
     failure: function(data) { 
     alert("XML File could not be found"); 
     } 
    }); 

    function parseXml(xml) 
    { 
     //find every query value 
     tjq(xml).find("state").each(function() 
     { 
     myArr.push(tjq(this).value("label","country","resort","destair")); 
     }); 
    }; 

function setupAC() 
{tjq("#country1").autocomplete({ 
    source: myArr, 
    minLength: 3, 

select: function(event, ui) { 
     event.preventDefault(); 
     tjq('#country1').val(ui.item.label); 
     this.value = ui.item.label; 
      tjq('#country').val(ui.item.country); 
      tjq("#country").change(); 
      tjq('#resort').val(ui.item.resort); 
      tjq('#destair').val(ui.item.destair);  
      tjq("#destair").change(); 
    } 
});} 

次のようにXMLデータがある:

<states> 
<state label="Dubrovnik Region, Croatia" country="Croatia" resort="" destair="DBV"/> 
<state label="Dubrovnik Region, Croatia" country="Croatia" resort="" destair="DBV"/> 
<state label="Split Region, Croatia" country="Croatia" resort="" destair="SPU"/> 
<state label="Split, Croatia" country="Croatia" resort="1723" destair="SPU"/> 
</states> 

JSfiddle:

myArr.push(tjq(this).value("label","country","resort","destair")); 

から値を読み取ることができません:https://jsfiddle.net/ftro7bqd/

答えて

0

からですバツmlデータ。そしてmyArrは空です。

これは、代わりにそれの仕事かもしれません:

 label = $(this).find("label").attr('value'); 
    country = $(this).find("country").attr('value'); 
    resort = $(this).find("resort").attr('value'); 
    destair = $(this).find("destair").attr('value'); 
    myArr.push({'label':label,'country':country,'resort':resort,'destair':destair}); 

今myArrが移入し、オートコンプリートは、それからの結果をフィルタリングします。

+0

こんにちは@ v.coder、ありがとうございました。私はこのコードをテストのために配置しましたが、結果を引き出すつもりはありません。 私は、おそらくオートコンプリートのコードをさらに見落としていますか?再度、感謝します。 –

+0

私はjsfiddleを作成しました。 https://jsfiddle.net/ftro7bqd/ –

+0

コードにjquery-uiライブラリを追加しました –

関連する問題