2016-09-15 2 views
0

У меня проблема с чтением XML из jQuery. Я могу загрузить XML, но я не могу читать свои теги, я хотел прочитать «MENUITEM» первый, а затем прочитать его атрибуты, мой код:Чтение xml с помощью jQuery не работает

$.ajax({ 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     cache: false, 
     url: baseUrl + "/sitefinity/services/tafesa/TAFEpagedata.svc/Mainmenu", 
     data: {}, 
     dataType: 'xml', 
     success: function (data, textStatus, jqXHR) { 

     console.log(data); 

      $(data).find('menuitem').each(function() { 

         htmlString = htmlString + writeToplevelNav($(this).attr('title'), $(this).attr('url'),$(this)); 
      }); 

И это мой XML:

<GetMainNavResponse xmlns="http://tempuri.org/"> 
    <GetMainNavResult> 
     <mainMenu> 
      <mainitem title="Courses" url="~/courses"> 
       <subitem title="Primary Industries @amp; Science" url="~/courses/primary-ind-science"> 
        <item title="Agriculture" url="~/courses/primary-ind-science/agriculture"/> 
        <item title="Animal Care @amp; Veterinary Nursing" url="~/courses/primary-ind-science/animal-care-veterinary-nursing"/> 
        <item title="Aquaculture" url="~/courses/primary-ind-science/aquaculture"/> 
        <item title="Conservation @amp; Land Management" url="~/courses/primary-ind-science/conservation-land-management"/> 
        <item title="Horticulture" url="~/courses/primary-ind-science/horticulture"/> 
        <item title="Science" url="~/courses/primary-ind-science/laboratory-technology"/> 
       </subitem> 
      </mainitem> 
     </mainMenu> 
    </GetMainNavResult> 
</GetMainNavResponse> 

Может ли кто-нибудь помочь мне с этим, огромное спасибо!

ответ

0

Проблема не существует элемент, называемый Пункт в меню в XML вы в курсе, если вы измените свой код:

$(data).find('mainitem') 

Вы получите первый элемент, название курсов и URL ~/курсы

Впоследствии для этого MainMenu MAINITEM Я думаю, что вы хотели бы получить его подразделы, а также с помощью:

$(data).find('mainitem').each(function() { 
    $(this).find('subitem').each(function() { 
     // Do some processing with subitem 
    }); 

    // Do some processing with mainitem as well 
}); 

, а затем пунктов подпунктов:

$(data).find('mainitem').each(function() { 
    $(this).find('subitem').each(function() { 

     $(this).find('item').each(function() { 
      // Process subitem's items 
     }); 

     // Do some processing with subitem as well 
    }); 

    // Do some processing with mainitem as well 
}); 

Я создал проект GitHub здесь раствором показывает эту технику: https://github.com/davethomas11/stackoverflow_Q_39502601

Hosted пример: https://www.daveanthonythomas.com/remote/so39502601/

+0

Привет Дэйв, Спасибо за быстрое решение. Да, я ошибочно ссылаюсь на другое имя, и это не проблема, когда я заменяю url: baseUrl + "/sitefinity/services/tafesa/TAFEpagedata.svc/Mainmenu" с таким адресом физического местоположения, как "url: baseUrl +"/sitefinity/services/tafesa/menu.xml "," Он работает. Мне нужно проверить это с помощью моего back-end dev. Цените свой ответ, и по моему запросу это правильно! – NPN

Смежные вопросы