JavaScript — как отправить длинную строку через AJAX в JS для переполнения стека

Я пытаюсь создать что-то вроде системы постов, которая позволит пользователям писать столько, сколько они хотят в каждом посте. Но у меня проблема с передачей длинного жала через AJAX. Это всегда говорит об этом (длина ссылки слишком велика), поэтому я попытался разделить мою строку на несколько сегментов, перенести их один за другим и записать в текстовый файл (я не хочу использовать базу данных для хранения данных пользователей). будет писать) с помощью функции PHP (fopen) с флагом (a), чтобы продолжить запись, как показано ниже

fopen($directory,"a")

также я использовал (encodeURIComponent), чтобы каждая часть длинной строки оставалась (\ n, пробелы, … и т. д.), но в результате я получил следующее:

например то, что я написал

bla bla bla bla bla bla bla

что я имею

bla bla bla SSbla bla bla b

Как решить эту проблему ??

мой код JS, где (d) является строкой

function sendDetails(t){
t = encodeURIComponent(t);
var x = new XMLHttpRequest();
x.open("POST","src/writeDetails.php?t="+t,true);
x.send();
}
function writeDetails(d){
var r = Math.floor(d.length / 1000);
var m = d.length % 1000;
for(i=0;i<r;i++){
var p = d.slice(i*1000,i*1000+999);
sendDetails(p);
}
if(i > 0){
sendDetails(d.slice(i*1000,i*1000+m));
}else{
sendDetails(d.slice(0,m))
}
}

мой код PHP

$t = $_REQUEST['t'];
$f = fopen($fileLink,"a");
fwrite($f,$t);
fclose($f);

-3

Решение

Насколько я понимаю, ваша проблема заключается в том, что URI слишком длинный. Посмотри пожалуйста этот вопрос, связанный с максимальной длиной URI:

Если вы держите URL-адреса длиной до 2000 символов, они будут работать практически в любой комбинации клиентского и серверного программного обеспечения.

Чтобы решить эту проблему, вам нужно будет отправить данные в теле запроса, а не в части запроса URI:

function sendDetails(t){
t = encodeURIComponent(t);
var x = new XMLHttpRequest();
x.open("POST", "src/writeDetails.php", true);

var fd = new FormData();
fd.append("t", t);
x.send(fd);
}

Вот это спецификация API для XMLHttpRequest.send(),

Обратите внимание, что я использовал FormData объект как тело запроса, но вы можете выбрать другие подходящие для вас способы (например, JSON).

0

Другие решения

Ваш код неверен. Проверьте этот код вместо этого!

function sendDetails(t){
t = encodeURIComponent(t);
var x = new XMLHttpRequest();
x.open("POST","src/writeDetails.php",true);
x.send("t=" + t);
}

И ваш PHP должен быть таким:

if (isset($_POST['t']))
{
$t = $_POST['t']; // This is your variable with the t param you passed with AJAX
}
-1

По вопросам рекламы [email protected]