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

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

11.05.2015, 14:29. Просмотров 581. Ответов 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 и создать таблицу (jQuery):

Не получается распарсить 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() об совпадении и несовпадении
Два поля редактирования, два поля ввода пароля и кнопку. Организовать проверку...

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

8
Lazy_Den
2923 / 2603 / 1311
Регистрация: 15.01.2014
Сообщений: 5,714
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,760
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
Привет! Вот еще темы с решениями:

Создать массив, где 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;...

Распарсить ответ в виде html
Привет всем. Есть сайт , я его спарсил вот так : public static string...

трудности при распарсить ответ xml
есть ответ xml в нем есть значения которые я хочу обьеденить в дату ...


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

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

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