Я пытаюсь создать что-то вроде системы постов, которая позволит пользователям писать столько, сколько они хотят в каждом посте. Но у меня проблема с передачей длинного жала через 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);
Насколько я понимаю, ваша проблема заключается в том, что 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).
Ваш код неверен. Проверьте этот код вместо этого!
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
}