Ajax отправляет текст, но не может предоставить данные HTML - PullRequest
1 голос
/ 11 июня 2019

Я работаю над кодом, который будет извлекать данные из текстовой области и отправлять их через ajax при нажатии кнопки.

На следующем шаге PHP создаст файл на сервере и сохранит данные ajax в файл.

Я уже попробовал функцию addlashes в PHP, но она не работает.

Я попытался сделать это с помощью вышеуказанного метода, и он успешно отправил текстовые данные . Но проблема в данных HTML. Я думаю, что это должно быть проблемой синтаксического анализа.

HTML-код

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

Javascript код с Ajax

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

1 голос
/ 11 июня 2019

Вы должны сделать это с помощью 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>

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;
?>
0 голосов
/ 11 июня 2019

Пост будет работать таким образом

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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...