Javascript Ajax正在提交文本,但无法提交HTML数据

Javascript Ajax正在提交文本,但无法提交HTML数据,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我正在编写一个代码,该代码将从textarea获取数据,并在单击按钮时通过ajax提交数据 在下一步中,PHP将在服务器上创建一个文件,并将ajax数据存储到该文件中 我已经尝试过PHP的addslashes函数,但它不起作用 我已尝试通过上述方法完成,并成功提交了文本数据。但问题在于HTML数据。我认为这一定是一个解析问题 HTML代码 <textarea id="textareaCode"></textarea> <a href="javascript:void

我正在编写一个代码,该代码将从textarea获取数据,并在单击按钮时通过ajax提交数据

在下一步中,PHP将在服务器上创建一个文件,并将ajax数据存储到该文件中

我已经尝试过PHP的addslashes函数,但它不起作用

我已尝试通过上述方法完成,并成功提交了文本数据。但问题在于HTML数据。我认为这一定是一个解析问题

HTML代码

<textarea id="textareaCode"></textarea>
<a href="javascript:void(0);" id="savebutton" onclick="makePage()"></a>

使用Ajax的Javascript代码

<script>

    function makePage(){
    var comment = document.getElementById('textareaCode').value; 
    alert (comment);
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
        alert("webpage " + xmlhttp.responseText + " was successfully created!");
    }
    var content = comment;
    xmlhttp.open("GET","makePage.php?content=" + content,true);
    xmlhttp.send();
}

</script>

函数makePage(){
var comment=document.getElementById('textareaCode')。值;
警惕(评论);
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200)
警报(“已成功创建网页”+xmlhttp.responseText+);
}
var内容=评论;
open(“GET”,“makePage.php?content=“+content,true”);
xmlhttp.send();
}
最后是PHP代码

<?php
$content = $_GET["content"];
$file = uniqid() . ".html";
file_put_contents("userdata/$file", $content);
echo $file;
?>


我没有收到任何错误消息

你应该用POST而不是GET来做,就像蒂姆说的:

xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
此行设置了右侧标题

<textarea id="textareaCode"></textarea>
<a href="javascript:void(0);" id="savebutton" onclick="makePage()">test</a>

<script>

    function makePage(){
    var comment = document.getElementById('textareaCode').value;
    alert (comment);
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
        alert("webpage " + xmlhttp.responseText + " was successfully created!");
    }
    var content = JSON.stringify({ comment: comment });
    xmlhttp.open("POST","makePage.php",true);
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xmlhttp.send(content);
}

</script>

函数makePage(){
var comment=document.getElementById('textareaCode')。值;
警惕(评论);
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200)
警报(“已成功创建网页”+xmlhttp.responseText+);
}
var content=JSON.stringify({comment:comment});
open(“POST”,“makePage.php”,true);
setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(内容);
}
PHP:


Post将以这种方式工作

function makePage(){
   var data = document.getElementById('textareaCode').value;
   $.post("makePage.php", {content: data}, function(result){
      //Do something with the result
   });
};
然后是php

$content = $_POST['content'] or $_REQUEST['content']

Post数据而不是get,并将数据作为参数添加到
.send
。尝试使用Post,但不幸的是不工作Post将工作,但您必须从PHP代码中的
$\u Post
读取数据。在将用户输入存储到服务器之前,似乎还应该对其进行清理。我尝试了这两个部分,它都可以工作,但仍然没有发送HTML数据。文本数据正常。发布HTML时,请尝试
echo$content
,并检查是否有HTML代码破坏了内容或显示正确。如果这是正确的,那么应该正确创建文件。我怀疑HTML中有什么东西阻止了$file或file\u put\u内容代码得到正确处理。它正在创建文件,但大小为零KB。它甚至不发送文本数据。是否提供“HTML数据”示例?在textarea中编写一些文本,它应该可以工作,但在文本区域中编写一些HTML代码,它将无法工作在php文件中使用
var\u dump($\u POST)
它可以工作并发送整个HTML代码,因为我发送JSON字符串,您应该解码并使用它。像这样的?
$content = $_POST['content'] or $_REQUEST['content']