将操纵的div的内容保存到变量并传递给php文件

时间:2013-06-29 16:16:40

标签: php javascript jquery ajax

我曾尝试使用AJAX,但我想出的任何内容似乎都无法正常工作。我正在创建一个菜单编辑器。我使用php回复文件的一部分并使用javascript / jquery / ajax操作它(我在这里找到了代码:http://www.prodevtips.com/2010/03/07/jquery-drag-and-drop-to-sort-tree/)。现在我需要获取div的编辑内容(其中包含无序列表)我正在回显并将其保存到变量中,以便我可以再次将其写入文件。我无法使该资源的代码工作,所以我试图提出另一种解决方案。

如果有一个代码我可以放入javascript文件的$("#save").click(function(){ });部分,那可行,但.post似乎不适合我。如果有办法在onclick中启动php preg_match,那将是最简单的。

非常感谢任何帮助。

获取文件内容的代码。

<button id="save">Save</button>
<div id="printOut"></div>
<?php
    $header = file_get_contents('../../../yardworks/content_pages/header.html');
    preg_match('/<div id="nav">(.*?)<\/div>/si', $header, $list);
    $tree = $list[0];
    echo $tree;
?>

处理新div并发送到php文件的代码。

$("#save").click(function(){
    $.post('edit-menu-process.php', 
        {tree: $('#nav').html()}, 
        function(data){$("#printOut").html(data);}
    );
});

一切正常工作除了我对传递数据的编码之外的一些事情使得它不能被读作html而只是纯文本。如何将其转换回html? 编辑:我能够让这个正常工作。我将尝试将其切换到DOMDocument。

$path = '../../../yardworks/content_pages/header.html';
    $menu = htmlentities(stripslashes(utf8_encode($_POST['tree'])), ENT_QUOTES);
    $menu = str_replace("&lt;", "<", $menu);
    $menu = str_replace("&gt;", ">", $menu);

    $divmenu = '<div id="nav">'.$menu.'</div>';

    /* Search for div contents in $menu and save to variable */
    preg_match('/<div id="nav">(.*?)<\/div>/si', $divmenu, $newmenu);
    $savemenu = $newmenu[0];

    /* Get file contents */
    $header = file_get_contents($path);

    /* Find placeholder div in user content and insert slider contents */
    $final = preg_replace('/<div id="nav">(.*?)<\/div>/si', $savemenu, $header);

    /* Save content to original file */
    file_put_contents($path, $final);   
?>
Menu has been saved.

1 个答案:

答案 0 :(得分:0)

使用ajax发布div的内容:

$.post('/path/to/php', {
    my_html: $('#my_div').html()
}, function(data) {
    console.log(data);
});

如果那不是你需要的,那么请在你的问题上发布一些代码。这很模糊。

另外,您在同一问题中提及了preg_matchhtml。我知道这是怎么回事,我不喜欢它。 You can't parse [X]HTML with regex。请改用解析器。像这样:http://php.net/manual/en/class.domdocument.php