2016-05-04 6 views
0

Я использую Ajax для вызова страницы, которая выглядит как:изменения текста JQuery в h3 теге

<div class="ui-block-a"> 
    <div class="jqm-block-content invoicehomepage"> 
     <h3>Invoices</h3> 
     <p><a href="pages/" data-ajax="false" class="ui-link">Pages</a></p> 
     <p><a href="navigation/" data-ajax="false" class="ui-link">Navigation</a></p> 
     <p><a href="loader/" data-ajax="false" class="ui-link">Loader</a></p> 
     <p><a href="transitions/" data-ajax="false" class="ui-link">Transitions</a></p> 
    </div> 
</div> 

и мой Аякс вызов:

var pageContent = ''; 
     $.ajax({ 
       url: 'jsp/home/home.jsp', 
       type: 'POST', 
       dataType:'json', 
       success:function(data) { 

        $.each(data, function(i, v) { 
         $.ajax({ 
           url: 'tmpl/homePortlet/'+v.link+'.html', 
           dataType : "html", 
           success: function(html_data) { 
           //var result = $('</div>').append(html_data).find('h3').html(); 
            //$('h3').html(v.portletName); 
            pageContent += html_data; 
            //console.log(pageContent); 
           } 
         }); 
         console.log(pageContent+'sssss'); 
        }); 

       } 
     }); 

Я хочу, чтобы изменить текст в h3 тега значение, которое я получил от моего второго вызова ajax.

Спасибо за помощь.

ответ

0

Вы должны изменить HTML-элемент h3, найдя его в содержании, которое вы получили в чем-то Ajax вызовов, как это:

pageContent = $(html_data).find("h3:first").html(" YOUR-TEXT-YOU-WANNA-PUT ").parent(); 

Update:

Я думаю, вы должны использовать async: false во втором вызове ajax. Во-вторых, я не думаю, что вам нужно хранить/обновлять html в некоторой переменной, как вы использовали pageContent. Вы должны использовать JQuery .append() method:

$.ajax({ 
    url: 'jsp/home/home.jsp', 
    type: 'POST', 
    dataType:'json', 
    success:function(data) { 
     $.each(data, function(i, v) { 
      $.ajax({ 
       url: 'tmpl/homePortlet/'+v.link+'.html', 
       dataType : "html", 
       async: false, 
       success: function(html_data) { 

        var new_html_data = $(html_data).find("h3:first").html(v.portletName).parent(); 
        $('.ui-grid-a').append(pageContent); 
       } 
      }); 
     }); 
    } 
}); 
+0

Да, вы правы, я хочу изменить текст, полученный из ajax, но он не работает для меня. html_data показывает правильные данные, когда я использую 'find', он не возвращает никакого значения. – user2223377

+0

@ user2223377 Я реализую свой пример с HTML, который вы указали в своем вопросе, и вы можете видеть, что он работает правильно! Вот [рабочая скрипка] (http://jsfiddle.net/4oppy38d/) – hmd

+0

, но когда я использовал этот код на своей странице, он показывает объект объекта. \t \t var pageContent = ''; \t \t $ .ajax ({ \t \t \t URL: 'JSP/дом/home.jsp', \t \t \t типа: 'POST', \t \t \t DATATYPE: 'JSON', \t \t \t успех: функция (данные) {\t \t \t \t \t \t \t \t $ .each (данные, функция (I, V) { \t \t \t \t \t \t $ .ajax ({ \t \t \t \t \t \t \t URL: 'TMPL/homePortlet /' + v.link +».HTML», \t \t \t \t \t \t \t DATATYPE: "HTML", \t \t \t \t \t \t \t успех: функция (html_data) { \t \t \t \t \t \t \t вар new_html_data = $ (html_data) .find ("h3") HTML (v.portletName) .parent(). \t \t \t \t \t \tстраницаContent + = new_html_data; \t \t \t \t \t \t \t $ HTML (PageContent) ('щ-сетка-а.').; \t \t \t \t \t \t \t} \t \t \t \t \t \t}); \t \t \t \t}); \t \t \t \t \t \t \t} \t}); – user2223377

0

использование: $('h3').text(v.portletName);

0

кажется ваш запрос AJAX является асинхронным ..

Вы можете добавить async : false, вариант в Ajax запроса, поэтому, когда запрос на окончание, второй запрос начинается и на успех второго запроса AJAX вы можете изменить текст тега H3.

var pageContent = ''; 
$.ajax({ 
    url: 'jsp/home/home.jsp', 
    type: 'POST', 
    dataType:'json', 
    async:false,// add this line so the success callback execute after response receive. 
    success:function(data) { 
     $.each(data, function(i, v) { 
       $.ajax({ 
        url: 'tmpl/homePortlet/'+v.link+'.html', 
        dataType : "html", 
        async:false,// add this line so the success callback execute after response receive. 
        success: function(html_data) { 
         $('h3').html(v.portletName); 
         pageContent += html_data; 
        } 
       }); 
       console.log(pageContent+'sssss'); 
     }); 

    } 
); 
+0

Синхронный XMLHttpRequest в основной теме устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной справки проверьте https://xhr.spec.whatwg.org/. – user2223377

+0

, но из-за синхронного вызова..browser пропустит функцию успеха –

+0

@ user2223377 вы попробовали асинхронно: false? –

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