Форум программистов, компьютерный форум, киберфорум
Наши страницы
jQuery
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Kazachek
17 / 17 / 8
Регистрация: 03.11.2013
Сообщений: 391
1

Распарсить ответ в виде XML и создать таблицу

11.05.2015, 14:29. Просмотров 1100. Ответов 8
Метки нет (Все метки)

Всем добрый день. Отправляя Ajax запрос получаю XML в ответ. Мне необходимо расспарсить его и создать таблицу. А таблицу занести в определенный DIV. С циклом никогда не работал, по этому не получается у меня. Если есть возможность помогите пожалуйста.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<<<XML
<?xml version='1.0' standalone='yes'?>
<questions>
 <question>
  <title>Вопрос 1</title>
  <variants>
   <variant>
    <var_text>Вариант1</var_text>
   </variant>
   <variant>
    <var_text>Вариант2</var_text>
   </variant>
  </variants>
 </question>
</questions>
XML;
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<Table>
    <tr>
        <td>
            Вариант1
       </td>
     </tr>
      <tr>
        <td>
            Вариант2
       </td>
     </tr>
 
</table>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2015, 14:29
Ответы с готовыми решениями:

Не получается распарсить xml
Здравствуйте. помогите пожалуйста. есть xml: &lt;?xml version =&quot;1.0&quot; encoding...

jquery распарсить xml выдрать html и вставить
данного вопроса, пришел к следующему, в php скрипте html данные предназначенные...

Ajax -ответ сервера в формате XML в IE сразу выводится в окно
Не могу понять.В FF такой проблемы нет.Но в IE когда получает ответ в формате...

Как сохранить ответ сервера из response в файл к примеру в text или xml
Как сохранить ответ сервера из response в файл к примеру в text или xml ...

Организовать проверку совпадения паролей в обоих полях и выдать ответ в виде alert() об совпадении и несовпадении
Два поля редактирования, два поля ввода пароля и кнопку. Организовать проверку...

8
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,758
11.05.2015, 15:34 2
Kazachek, пример в песочнице
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
    url: 'path/to/handler.php', // путь к обработчику
    type: 'POST', // или GET
    dataType: 'xml', // тип ожидаемых данных
    data: {some_key: some_val}, // передаваемые данные (если нужно)
    success: function(data){
        var lines = $('variant',data).map(function(i, el){
            return $('<tr />').append($('<td />', {text: $('var_text',el).text()}));
        }).get();
        $('<table />', {html: lines}).appendTo('body');
    }
});
1
Armi
309 / 103 / 69
Регистрация: 18.04.2015
Сообщений: 342
11.05.2015, 15:39 3
Лучший ответ Сообщение было отмечено Kazachek как решение

Решение

Не знал куда заголовок вам, строчкой выше вариантов добавил.
HTML5
1
2
3
<div id="table_xml">
 
</div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    <script> $(document).ready(function () {
 
    $.ajax({
 
        type: "GET",
 
        url: " main.xml",
 
        dataType: "xml",
 
        success: xmlParser
 
    });
 
});
 
function xmlParser(xml) {
 
 
 
    $(xml).find("question").each(function () {
$("#table_xml").append('<table></table>');
     $("#table_xml table").append('<tr><td>' + $(this).find("title").text() + '</td></tr>');
             $(this).find("variant").each(function(){
              $("#table_xml table").append('<tr><td>' + $(this).find("var_text").text() + '</td></tr>');
             
             });
 
       
 
    });
 
}
</script>
1
Kazachek
17 / 17 / 8
Регистрация: 03.11.2013
Сообщений: 391
11.05.2015, 17:38  [ТС] 4
Lazy_Den, Armi, друзья огромное спасибо, вы реально меня спасли, извините за позднее подтверждение, у меня инет пропал.

А можно ли как то к каждому <TD> добавить обработчик клика, и при нажатии отправить значение обработчику, а от туда получить новый xml?
Заранее благодарю за содействие.
0
Armi
309 / 103 / 69
Регистрация: 18.04.2015
Сообщений: 342
11.05.2015, 18:01 5
Javascript
1
2
3
$("#table_xml").on("click","table td", function(){
alert($(this).text()); //выведет сообщение с содержимым ячейки на которую нажали
});
1
Kazachek
17 / 17 / 8
Регистрация: 03.11.2013
Сообщений: 391
12.05.2015, 12:47  [ТС] 6
Armi,
Огромное спасибо за помощь.
Можете посмотреть, обработчик который должен генерить xml файл не отвечает на ajax запрос. Можете указать на ошибку? Прошу прощения за навязчивость. Своими силами не получается((

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
include('connectdb.php');
mysql_query("SET NAMES 'utf8'");
switch ($_REQUEST['action']) {
    case 'answer_request':
        $ans=$_POST['ansver'];
        if($ans==1){
            $query = mysql_query("SELECT * FROM  `questions_history` WHERE STATUS =1 AND NOW() BETWEEN stime AND etime and id=2");
                
 
 
            $nachalo = "<<<XML
                            <?xml version='1.0' standalone='yes'?>
                            <questions>
                             <question>
                              <title>Вопрос 1</title>
                              <variants>";
 
 
 
            while($row = mysql_fetch_array($query)){
                $qtext=$row['text'];
                $qid=$row['id'];
                $query2 = mysql_query("SELECT * FROM  `q_variants` WHERE q_id =2 AND NOW()  BETWEEN stime AND etime AND qvar_stat =1 ORDER BY position ASC");
                    while($row2 = mysql_fetch_array($query2)){
                    $qtext=$row2['qvar_text'];
                    $qvar_id=$row2['id'];
                        echo "<variant>
                                <var_text>$qtext</var_text>
                              </variant>";
                    
                    };
                    
                    
            };
 
 
 
 
            echo "  </variants>
                     </question>
                    </questions>
                    XML;";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        }else{
            echo $ans;
            #echo "other";
        }
        break;
    default:
       echo "error";
   }
 
?>
Добавлено через 11 минут
Оказывается он генерирует, но парсер его не видит, возможно дело в том что он возвращает ответ ввиде строки а не xml документа?

Добавлено через 23 минуты
Цитата Сообщение от Armi Посмотреть сообщение
<script> $(document).ready(function () {
$.ajax({
type: "GET",
url: " main.xml",
dataType: "xml",
success: xmlParser()
});
});
function xmlParser(xml) {
$(xml).find("question").each(function () {
$("#table_xml").append('<table></table>');
* * *$("#table_xml table").append('<tr><td>' + $(this).find("title").text() + '</td></tr>');
* * * * * * *$(this).find("variant").each(function(){
* * * * * * * $("#table_xml table").append('<tr><td>' + $(this).find("var_text").text() + '</td></tr>');
});
});
}
</script>
Поставил скобки потом функция заработала, но он не доходит до парсинга, вот эта часть не работает
Цитата Сообщение от Armi Посмотреть сообщение
$(xml).find("question").each(function () {
$("#table_xml").append('<table></table>');
* * *$("#table_xml table").append('<tr><td>' + $(this).find("title").text() + '</td></tr>');
* * * * * * *$(this).find("variant").each(function(){
* * * * * * * $("#table_xml table").append('<tr><td>' + $(this).find("var_text").text() + '</td></tr>');
});
0
alpex
600 / 575 / 103
Регистрация: 16.07.2012
Сообщений: 1,761
12.05.2015, 21:02 7
В начале php файда отправьте заголовок что это xml
PHP
1
header("Content-type: text/xml");
1
Kazachek
17 / 17 / 8
Регистрация: 03.11.2013
Сообщений: 391
13.05.2015, 08:10  [ТС] 8
Цитата Сообщение от alpex Посмотреть сообщение
В начале php файда отправьте заголовок что это xml
Код PHP
1
header("Content-type: text/xml");
не помогло((

Добавлено через 9 часов 36 минут
Цитата Сообщение от Kazachek Посмотреть сообщение
не помогло((
Извиняюсь, документ был сохранен в другой кодировке. Сохранил в UTF-8 без BOM и стал возвращать xml.
Но все же указанная часть функции не срабатывает((. Помогите пожалуйста.

Javascript
1
2
3
4
5
6
7
8
9
$(xml).find("question").each(function () {
                    console.log('Create table');
                    $("#table_xml").append('<table></table>');
                    $("#table_xml table").append('<tr><td>' + $(this).find("title").text() + '</td></tr>');
                    $(this).find("variant").each(function(){
                        $("#table_xml table").append('<tr><td>' + $(this).find("var_text").text() + '</td></tr>');
                 
                    });
                });
Добавлено через 42 минуты
Заработал, ошибка была на моей стороне извиняюсь

Добавлено через 38 минут
Заработал, ошибка была на моей стороне извиняюсь



Цитата Сообщение от Armi Посмотреть сообщение
$("#table_xml").on("click","table td", function(){
alert($(this).text()); //выведет сообщение с содержимым ячейки на которую нажали
});
Вот это куда именно должен вставить? Куда бы не ставил выдает ошибку((
Есть ли другой вариант обработки клика по TD таблицы?
0
Armi
309 / 103 / 69
Регистрация: 18.04.2015
Сообщений: 342
14.05.2015, 21:22 9
Цитата Сообщение от Kazachek Посмотреть сообщение
Вот это куда именно должен вставить? Куда бы не ставил выдает ошибку((
Есть ли другой вариант обработки клика по TD таблицы?
Странно. Убедитесь что оно находиться внутри ready. И что есть блок div с id=table_xml.
Пример в песочнице - https://jsfiddle.net/m4mgoj0h/

P.S. Меня не было на форуме, бесполезно писать в личку, если я тут, и так отвечу.
0
14.05.2015, 21:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2015, 21:22

Создать таблицу → Считать в двумерный массив → Вывести в таблицу
Добрый день. Необходимо создать динамическую таблицу M x N, считать из нее...

Создать массив, где 12 цифр складываются и в ответ выводится модальное окно с ответом
создать массив где 12 данных цифр (6,3,4,5,7,1,2,8,0,9,7,2) складываются и в...

Распарсить ответ от сервера в виде XML
Получаю от сервера xml документ типа: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru