php - 通过 AJAX 和 PHP 进行简单的实时 HTML 编辑

标签 php html ajax

我正在尝试建立一个简单的小网站,我可以在其中编辑数字。此更改 (onblur) 将通过 AJAX 发送到 PHP 脚本,将编辑后的数字写回到 HTML 文件中。

我已经做到了这一点,但无法让 PHP 和 DOMXpath 工作。

网站(index.html):

<div class="actualcount" contenteditable="true">254</div>

Javascript:

$.ajax({
     url: "save.php",
     type: "POST",
     data: {postdata: $(".actualcount").html()} ,
})

PHP:

<?php
     $editData = $_POST['postdata'];
     $newText = '<div class="actualcount" contenteditable="true">'.$editData.'</div>';
     $html = file_get_contents('index.html');
     $dom = new DOMDocument;
     $dom->loadHTML($html);
     $xpath = new DOMXPath($dom);
     $actualcount = $xpath->query('//*[@class="actualcount"]')->item(0);
     $actualcount->parentNode->replaceChild($newText, $actualcount);
     $dom->saveHTMLFile("index.html");
?>

它给了我一个

Fatal Error: Uncaught TypeError: Argument 1 passed to DOMNode::replaceChild() must be an instance of DOMNode, string given ...

感谢您的热心帮助。

最佳答案

replaceChild 接受 2 个节点元素作为参数,您传递的第一个是一个字符串!您需要创建一个元素。

这是一个简单的示例,说明如何使用 DOMDocument::createElement 执行此操作和 DOMElement::setAttribute

<?php
     if(isset($_POST['postdata'])) {
         $editData = (string) $_POST['postdata']; 
     } else {
         $editData = '';
     }

     $html = file_get_contents('index.html');
     $dom = new DOMDocument;
     libxml_use_internal_errors(true);
     $dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
     libxml_clear_errors();
     $xpath = new DOMXPath($dom);
     $actualcount = $xpath->query('//*[@class="actualcount"]')->item(0);
     $newnode = $dom->createElement('div', $editData); 
     $newnode->setAttribute("class", "actualcount");
     $newnode->setAttribute("contenteditable", "true");
     $actualcount->parentNode->replaceChild($newnode, $actualcount);
     $dom->saveHTMLFile("index.html");
?>

关于php - 通过 AJAX 和 PHP 进行简单的实时 HTML 编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48105096/

相关文章:

javascript - JavaScript 中的 API 调用

html - 固定操作栏,考虑页脚

javascript - 下拉菜单在CSS中折叠

javascript - 通过按钮更改图库

c# - 无法从 json 结果 MVC 4 中检索值

php - Laravel belongsTo - 指定字段

php - 服务器问题空白页 - Apache、Linux、Joomla

php - 我想在使用第三个页面时同时链接两个 php 页面

php - Ajax、php、mysql 聊天

javascript - Ajax 获取表单数据和 url