我正在制作一个具有保存功能的自定义WYSIWYG编辑器,通过保存功能,我运行了一些代码来获取某个div中的所有内容,将其保存到数据表中或覆盖它。但是现在,我正试图加载页面。
过程如下:你按下保存按钮,它会运行一个名为save.php的PHP脚本,如下所示。
我的问题是我希望它加载或回显原始html页面上某个div内的内容。我该怎么做呢?我需要它像Javascript的innerHTML函数一样工作,基本上。
以下是我使用的文件,至少是相关部分。
的test.html:
<form method="post" name="blog-post" id="blog-post">
<input type="hidden" name="postID" value="1"><!--Get the post's id-->
<div class="blog-editor-bar">
<a href="#" data-command='save'
onclick="submitForm('save.php');">
<i class='fa fa-save'></i>
</a>
</div>
<div id="blog-textarea" contenteditable>
</div>
<textarea style="display:none;" id="blog-post-cont" name="post-content"></textarea>
</form>
test.js:
function submitForm(action){
var theForm = document.getElementById("blog-post");
theForm.elements("post-content").value = document.getElementById("blog-textarea").innerHTML;
theForm.action = action;
theForm.submit();
}
save.php:
$conn = mysqli_connect('localhost', 'root', '', '');
if (mysqli_connect_errno()){
echo "<p>Connection Failed:".mysqli_connect_error()."</p>\n";
}
//store stuff in database
//Get Variables
$postid = $_POST['postID'] ? $_POST['postID'] : null;
$post = $_POST['post-content'] ? $_POST['post-content'] : null;
//if exists, overwrite
if($postid != null || $postid != ""){
$sqlSave = "SELECT * FROM wysiwyg.post WHERE idpost = $postid";
$rSave = mysqli_query($conn, $sqlSave) or die(mysqli_error($conn));
if(mysqli_num_rows($rSave)){
$sqlOverwrite = "INSERT INTO wysiwyg.post(post) VALUES(?) WHERE idpost = ?";
$stmt = mysqli_prepare($conn, $sqlOverwrite);
mysqli_stmt_bind_param($stmt, "sd", $post, $postid);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
} else {
newSave();
}
loadSave();
}
function newSave(){
$sqlNewSave = "INSERT INTO wysiwyg.post(post) VALUES(?)";
$stmt = mysqli_prepare($conn, $sqlNewSave);
mysqli_stmt_bind_param($stmt, "s", $post);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
function loadSave(){
$sqlLoad = "SELECT * FROM wysiwyg.post WHERE idpost = $postid";
$rLoad = mysqli_query($conn, $sqlLoad) or die(mysqli_error($conn));
//This is the part I'm stuck on
}
感谢大家提前帮助我!我被困在它上至少几个小时!
编辑:在人们评论SQL注入之前,我已经考虑过了。这是我在我的本地主机上运行代码之前,我通过我过去已经完成的大量反sql注入方法运行它。我提供的代码仅对此时的功能很重要。
编辑#2:反注射代码已经存在。我想我似乎忘了提供这些信息。我再说一遍,我在这里提供的代码只是与功能相关的代码。我已经逃脱了弦乐,修剪等等等,但是这些代码并不是必须让人们了解我想要做的事情。
答案 0 :(得分:1)
您可以使用 AJAX请求与服务器进行通信,发送数据并接收回复。那里有很多很好的教程,但是自从我第一次在W3Schools网站上学到它以后,我会在那里推荐你。
答案 1 :(得分:0)
您可以使用如下所示的AJAX请求:
<script>
$(document).ready(function(){
$.ajax({ //start an AJAX call
type: 'GET', //Action: GET or POST
data: {VariableName: 'GETvalue'}, //Separate each line with a comma
url: 'Destination.php', //save.php in your case
success: function(data)){ //if values send do this
//do whatever
}
}); //end ajax request
});
</script>
这允许您在不刷新的情况下将信息发送到您的php页面 因此,在我的示例中,您可以在PHP端执行此操作
<?php
echo $_GET['VariableName'];
?>
将按照Ajax调用的数据部分中指定的#34;
回显&#34; GETvalue编辑************
在AJAX调用中,如果需要json
,可以添加dataType$.ajax({
type: 'GET',
data: {VariableName: 'GETvalue'},
dataType: 'json' // Allows Json values or you can change it to whatever you want
url: 'Destination.php',