我曾尝试使用 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("<", "<", $menu);
$menu = str_replace(">", ">", $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.