Ajax jQuery: Как передать большие HTML-тэги как параметры?

Как я могу передать большие данные HTML-тэга своему PHP использование Ajax jQuery? Когда я получаю результат, это неправильно.

код Ajax jQuery:

$('#saveButton').click(function() {
        // do AJAX and store tree structure to a PHP array 
        //(to be saved later in database)
        var treeInnerHTML = $("#demo_1").html();
        alert(treeInnerHTML);
        var ajax_url = 'ajax_process.php';
        var params = 'tree_contents=' + treeInnerHTML;
        $.ajax({
            type: 'POST',
            url: ajax_url,
            data: params,
            success: function(data) {
                $("#show_tree").html(data);

            },
            error: function(req, status, error) { }
        });
});

фактическое значение treeInnerHTML:

<ul class="ltr">
   <li id="phtml_1" class="open">
       <a href="#"><ins>&nbsp;</ins>Root node 1</a>
       <ul>
           <li class="leaf" id="phtml_2">
             <a href="#"><ins>&nbsp;</ins>Child node 1</a>
           </li>
           <li class="last leaf" id="phtml_3">
             <a href="#"><ins>&nbsp;</ins>Child node 2</a>
           </li>
       </ul>
   </li>
   <li id="phtml_5" class="file last leaf">
       <a href="#"><ins>&nbsp;</ins>Root node 2</a>
   </li>
</ul>

Возвращенный результат моего show_tree отделения:

<ul class="\&quot;ltr\&quot;">
   <li id="\&quot;phtml_1\&quot;" class="\&quot;open\&quot;">
       <a href="%5C%22#%5C%22"><ins></ins></a>
   </li>
</ul>
6
задан JJJ 27 June 2013 в 06:56
поделиться

3 ответа

Посмотрите, помогает ли изменение параметров из строки в объект:

var params = { tree_contents: treeInnerHTML };

См. http://jsfiddle.net/7bF2Y/

5
ответ дан 10 December 2019 в 00:35
поделиться

Вы передаете значение без URL-кодирования, поэтому, вероятно, оно неправильно обрабатывается на сервере. Как сказал Салман A , вы должны заставить jQuery позаботиться об этом за вас, передав вместо этого словарь:

var params = { tree_contents: treeInnerHTML };
1
ответ дан 10 December 2019 в 00:35
поделиться
var params = 'tree_contents=' + encodeURIComponent(treeInnerHTML);

TreeInnerHTML отключается при первой отметке & (поскольку данные POST используют формат var1 = val & var2 = val2 & ... ), оставшаяся часть результирующего HTML - это ваш браузер, автоматически закрывающий незакрытые теги.

4
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: