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

时间:2019-06-11 06:03:59

标签: javascript php html ajax

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

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

我已经尝试过PHP的addlashes函数,但是那不起作用。

我尝试通过上述方法进行操作,并成功提交了文本数据。但是问题在于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>

最后是PHP代码

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

我没有收到任何错误消息

2 个答案:

答案 0 :(得分:1)

您应该使用POST而不是GET进行操作,就像Teemu所说的那样:

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>

PHP:

<?php
$data = json_decode(file_get_contents('php://input'), true);
$content = $data['comment'];
$file = uniqid() . ".html";
file_put_contents("userdata/$file", $content);
echo $file;
?>

答案 1 :(得分:0)

帖子将以这种方式工作

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']