使用 PHP、Ajax、jQuery 将当前 DOM 保存到服务器上的文件?
Save Current DOM to file on server using PHP, Ajax, jQuery?
我到处搜索,但我找到的每个解决方案到目前为止都不适合我。
我正在构建一个网站应用程序,人们可以在其中创建自己的幻灯片。当用户单击保存按钮时,我希望将当前 DOM 保存为我的 Web 服务器上的 HTML 文件。
我尝试的第一种方法使用 Ajax,但没有返回任何内容:
AJAX
function chk() {
var elHtml = document.getElementById('dropzone').innerHTML;
console.log("inside chk");
$.ajax({
type: "POST",
url: 'https://www.tap-plus.org/wp-content/themes/Avada/softwarefiles/savefile.php',
dataType: 'json',
data: {functionname: 'write_to_server', arguments: [elHtml] },
cache:false,
success: function (obj) {
if( !('error' in obj) ) {
$('#msg').html(obj);
}
else {
console.log(obj.error);
}
}
});
return false;
}
savefile.php
function write_to_server($html_code) {
$html_string = $_POST['arguments'][0];
var_dump($html_string);
echo 'test';
}
html
<input type="submit" id="saving" class="btn btn-primary pull-right" value="Save2" onclick="return chk()"/>
上面的方法returns没什么。我尝试的第二种方法是使用当前网站 URL 的 loadHTMLFile
获取当前 DOM 文档。返回 null.
DOM文档
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile('https://https://www.tap-plus.org/tapplus-software/');
var_dump($dom);
结果:
object(DOMDocument)#3045 (35) { ["doctype"]=> NULL ["implementation"]=> string(22) "(object value omitted)" ["documentElement"]=> NULL ["actualEncoding"]=> NULL ["encoding"]=> NULL ["xmlEncoding"]=> NULL
此外,如果可能的话,我想在不重新加载页面的情况下完成此操作。因为理想情况下,如果有人在他们正在处理的幻灯片上点击保存按钮,他们不希望页面突然重新加载。
我不确定我做错了什么或解决此问题的下一步是什么。提前致谢。
PHP 应该回显 JSON,而不是 HTML 输入。
function write_to_server($html_code) {
$html_string = $_POST['arguments'][0];
echo json_encode(array('msg' => 'Data saved successfully'));
}
并且 jQuery 代码应该显示消息。
if( !('error' in obj) ) {
$('#msg').html(obj.msg);
}
else {
console.log(obj.error);
}
解决了!这是我单击保存按钮的解决方案,return 特定元素的 html 代码并阻止页面刷新:
AJAX
var url = '/savefile.php';
function chk() {
var elHtml = document.getElementById('outer-content').innerHTML;
console.log("inside chk");
$.ajax({
type: "POST",
url: url,
data: {myCode: elHtml },
success: function (obj) {
console.log("success outer");
$('#msg').html(obj);
console.log("success");
}
});
console.log(url);
return false;
}
PHP
$html_val = $_POST[ 'myCode' ];
var_dump($html_val);
其实比我想象的要简单很多。
我到处搜索,但我找到的每个解决方案到目前为止都不适合我。
我正在构建一个网站应用程序,人们可以在其中创建自己的幻灯片。当用户单击保存按钮时,我希望将当前 DOM 保存为我的 Web 服务器上的 HTML 文件。
我尝试的第一种方法使用 Ajax,但没有返回任何内容:
AJAX
function chk() {
var elHtml = document.getElementById('dropzone').innerHTML;
console.log("inside chk");
$.ajax({
type: "POST",
url: 'https://www.tap-plus.org/wp-content/themes/Avada/softwarefiles/savefile.php',
dataType: 'json',
data: {functionname: 'write_to_server', arguments: [elHtml] },
cache:false,
success: function (obj) {
if( !('error' in obj) ) {
$('#msg').html(obj);
}
else {
console.log(obj.error);
}
}
});
return false;
}
savefile.php
function write_to_server($html_code) {
$html_string = $_POST['arguments'][0];
var_dump($html_string);
echo 'test';
}
html
<input type="submit" id="saving" class="btn btn-primary pull-right" value="Save2" onclick="return chk()"/>
上面的方法returns没什么。我尝试的第二种方法是使用当前网站 URL 的 loadHTMLFile
获取当前 DOM 文档。返回 null.
DOM文档
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile('https://https://www.tap-plus.org/tapplus-software/');
var_dump($dom);
结果:
object(DOMDocument)#3045 (35) { ["doctype"]=> NULL ["implementation"]=> string(22) "(object value omitted)" ["documentElement"]=> NULL ["actualEncoding"]=> NULL ["encoding"]=> NULL ["xmlEncoding"]=> NULL
此外,如果可能的话,我想在不重新加载页面的情况下完成此操作。因为理想情况下,如果有人在他们正在处理的幻灯片上点击保存按钮,他们不希望页面突然重新加载。 我不确定我做错了什么或解决此问题的下一步是什么。提前致谢。
PHP 应该回显 JSON,而不是 HTML 输入。
function write_to_server($html_code) {
$html_string = $_POST['arguments'][0];
echo json_encode(array('msg' => 'Data saved successfully'));
}
并且 jQuery 代码应该显示消息。
if( !('error' in obj) ) {
$('#msg').html(obj.msg);
}
else {
console.log(obj.error);
}
解决了!这是我单击保存按钮的解决方案,return 特定元素的 html 代码并阻止页面刷新:
AJAX
var url = '/savefile.php';
function chk() {
var elHtml = document.getElementById('outer-content').innerHTML;
console.log("inside chk");
$.ajax({
type: "POST",
url: url,
data: {myCode: elHtml },
success: function (obj) {
console.log("success outer");
$('#msg').html(obj);
console.log("success");
}
});
console.log(url);
return false;
}
PHP
$html_val = $_POST[ 'myCode' ];
var_dump($html_val);
其实比我想象的要简单很多。