0

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

如果有一个代码我可以放入$("#save").click(function(){ });javascript 文件的一部分,那会起作用,但.post似乎不想为我工作。如果有一种方法可以preg_match在 onclick 中启动 php,那将是最简单的。

任何帮助将不胜感激。

获取文件内容的代码。

<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.
4

1 回答 1

0

使用 ajax 发布 div 的内容:

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

如果这不是您需要的,请在您的问题中发布一些代码。这是非常模糊的。

另外,您在同一个问题中提到preg_match和。html我知道这是怎么回事,我不喜欢它。您无法使用 regex 解析 [X]HTML。请改用解析器。像这样: http: //php.net/manual/en/class.domdocument.php

于 2013-06-29T16:22:26.233 回答