php AJAX 响应包含整个页面的html而不是文本编辑器的内容

qmelpv7a  于 2022-12-21  发布在  PHP
关注(0)|答案(2)|浏览(140)

我正在使用ckeditor。我使用 AJAX 通过post方法发送ckeditor的内容。我的计划是在div中显示响应。但是在响应中我得到了整个页面的html,而不是编辑器的内容。这是怎么回事?我怎么才能只得到编辑器的内容

<?php  
if(isset($_POST) && !empty($_POST)){
echo $_POST['content'];
}
?>

<html>
<head>
  <script  src='ckeditor/ckeditor.js'></script>
</head>
<body>
 <form action='test.php' method='post'>
            <textarea name="editor1" id="editor1" rows="10" cols="80">
                This is my textarea to be replaced with CKEditor.
            </textarea>
            <input type='button' value='submit' onClick='lol(event);'>
    </form>
    <div id='content' style='border:2px solid black;'>

    </div>
            <script>

CKEDITOR.replace( 'editor1');
function lol(event){
    var xhr=new XMLHttpRequest();

    xhr.onreadystatechange=function(){
       if(xhr.readyState==4 && xhr.status==200){
           //document.getElementById('content').innerHTML=xhr.response;  
           alert(xhr.responseText);
       }
    }
    var value=CKEDITOR.instances.editor1.getData();
    var params = "content="+value;
    xhr.open('POST','test.php',true);
    //xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(params);
    //alert(value);
}

            </script>

</body>
</html>
6kkfgxo0

6kkfgxo01#

当您使用echo时,将发送响应,然后发送html。如果您想在echo之后停止,请使用die();

<?php  
  if(isset($_POST) && !empty($_POST)) {
    die($_POST['content']);
  }
?>

此外,还应检查内容是否已设置:

<?php  
  if(isset($_POST) && !empty($_POST) && isset($_POST['content'])) {
    die($_POST['content']);
  }
?>
efzxgjgh

efzxgjgh2#

尝试这个解决方案,添加变量到Javascript变量调用params和这个变量来检查是否已经打开这些项目或没有,并防止主要项目不打开超过1次,即使你调用你的页面的 AJAX ,要清楚尝试l8ike的var params = "content="+value+"isopepend=1";然后使用php if语句,如如果没有所需的变量,然后打印您的主要项目,这将只发生一次,当你将访问这页直接与没有 AJAX 请求

<?PHP
    if(!$_POST['isopepend'])
    {
    echo "home elements";
    }
?>

相关问题