使用PHP,Ajax,jQuery将当前D OM保存到服务器上的文件中吗?

问题描述 投票:0回答:1

我到处搜索过,但是到目前为止,找到的每个解决方案都不适用于我。

我正在构建一个网站应用,人们可以在其中创建自己的幻灯片。当用户单击“保存”按钮时,我希望将当前DOM作为HTML文件保存在Web服务器上。

我尝试的第一种方法使用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()"/>

以上方法不返回任何内容。我尝试的第二种方法是使用当前网站URL的loadHTMLFile获取当前DOMDocument。返回null。

DOMDocument

$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 jquery ajax dom domdocument
1个回答
0
投票

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);
    }
© www.soinside.com 2019 - 2024. All rights reserved.