С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
5 / 5 / 2
Регистрация: 08.07.2014
Сообщений: 569

Как передать любой текст на сервер?

01.06.2022, 13:56. Показов 1011. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ajax-ом передаю текст на сервер, метод и GET и POST используется, где как.
Нужно передать любые символы без ограничений. Сейчас даже запятая всё портит.
Как это можно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2022, 13:56
Ответы с готовыми решениями:

Как передать любой интерфейс в функцию с аргументом interface{}
Например, в Register(func(*grpc.Server, interface{})) передать func(*grpc.Server, proto.PasswordGeneratorServiceServer) Но выходит...

Как передать текст (текстовый файл или текст в программе) через запущенный VS с одного компа на другой?
Как передать текст (сохраненный через VS автоматически текстовый файл или сам некоторый текст в программе) через запущенный VS с одного...

Как задать в ConnectionString локальное расположение и любой сервер БД
Итак допустим у нас есть строка подключения "Data Source=(local)\ServerName;Initial Catalog=DBName;Integrated Security=True" Если...

7
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
01.06.2022, 19:41
Цитата Сообщение от trufanov Посмотреть сообщение
Сейчас даже запятая всё портит
код в студию
Цитата Сообщение от trufanov Посмотреть сообщение
Нужно передать любые символы без ограничений
с какими символами не получается? Какие-то эмодзи чтоли?
0
5 / 5 / 2
Регистрация: 08.07.2014
Сообщений: 569
02.06.2022, 18:43  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
с какими символами не получается? Какие-то эмодзи чтоли?
Нет. Только те, которые нанесены на клавиатуру.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
02.06.2022, 19:28
Цитата Сообщение от trufanov Посмотреть сообщение
Только те, которые нанесены на клавиатуру
показывайте код. Не верю, что обычные символы нельзя передать.
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,881
03.06.2022, 14:25
Цитата Сообщение от trufanov Посмотреть сообщение
Как это можно сделать?
Кодировать. Для GET обычно применяется URL-кодировка. Для POST - URL-кодировка (application/x-www-form-urlencoded) или multipart/form-data. Можно передавать и обычный текст (text/plain) или что-то свое (двоичные данные обязательно кодируются в base64 и т.п.).
0
5 / 5 / 2
Регистрация: 08.07.2014
Сообщений: 569
03.06.2022, 22:00  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
показывайте код. Не верю, что обычные символы нельзя передать.
JavaScript
1
2
3
4
$(function(){$(".top").click(function(){
var click_elem=$(this);
var id=click_elem.closest("div").attr('data-id');
$(click_elem).load("/adr.php?id="+id;})});
С количеством скобок мог ошибиться, но сейчас не это главное.
Кликаем по классу top, считываем атрибут у ближайшего div и передаем его в adr.php

Из такой комбинации
Code
1
~`!@#$%^&*()+={}[]\|/<>
получил
Code
1
~`!@
Мне эти спецсимволы нафиг не нужны, просто проверил.
Нужны круглые скобки и пробел. Если отсутствие скобок еще можно пережить, то отсутствие пробела доставляет неудобства.
Если в строку вставить пробел, то вообще ничего не происходит, а в консоли появляется ошибка
Code
1
2
3
4
5
6
7
8
9
10
11
Uncaught Error: Syntax error, unrecognized expression: )+={}[]\|/<>
    at nt.error (jquery.js:2:59319)
    at ut (jquery.js:2:46774)
    at vt (jquery.js:2:60425)
    at Function.nt [as find] (jquery.js:2:45851)
    at init.find (jquery.js:2:61702)
    at Object.<anonymous> (jquery.js:2:79479)
    at l (jquery.js:2:16996)
    at Object.fireWith [as resolveWith] (jquery.js:2:17783)
    at T (jquery.js:2:80993)
    at XMLHttpRequest.r (jquery.js:2:86563)
Пробел вставил между круглыми скобками и получается, что пробел разорвал фразу на части и привел к ошибке.
jquery.js это стандартный файл, библиотека jquery.
Когда все это написал, подумал, что наверное дело не в php, а в javascript/jquery. Не в тот раздел вопрос разместил. Но все равно буду рад подсказке.
Лезть в jquery.js и что-то там править не считаю правильным.

Цитата Сообщение от estic Посмотреть сообщение
Кодировать.
Не применяю.
Все из-за этого что ли?
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
03.06.2022, 22:56
trufanov, во-первых видимо метод .load библиотеки jquery пытается передать get'ом, во-вторых этот метод очевидно некоторые символы целенаправленно убирает.
Вот пример обычного запроса. И тут также нужно экранировать некоторые символы, например | и \.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let string = '~`!@#$%^&*()+={}[]\\|/<>';
let datum = new FormData;
datum.append('string', string);
let request = fetch(
    '343.php',
    {
        method: 'POST',
        headers:
        {
            // 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
        },
        body:   datum
    }).then((response) =>
        {
            response.text().then((text) =>
            {
                console.log(text);
                return;
            });
        });
Мой Вам совет - выкиньте jquery и изучайте js. Так поймёте нюансы, а потом, если захотите возьмёте какую-нибудь библиотеку посовременнее, react, vue и т.д.
Хотя если глубоко вникните в js, то после react и со будут казаться дурацкими чудовищами.
Миниатюры
Как передать любой текст на сервер?  
0
5 / 5 / 2
Регистрация: 08.07.2014
Сообщений: 569
06.06.2022, 12:56  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
Вот пример обычного запроса.
В моем случае весь передаваемый текст должен попасть в url, чтобы этот url можно было сохранить.

Искал ответ на вопрос какие символы невозможно передать в GET и ничего полезного не нашел. Зато по совершенно другому запросу попал на страницу https://developers.google.com/... ding?hl=ru. В самом начале написано, что пробел передать невозможно, так что облом )

На stackoverflow есть тема - "Игорь" все сломал. У человека буква "р" не всегда проходила. Получилось обойти с помощью $_SERVER['REQUEST_URI'] , в нем вся строка присутствует. Подумаю, насколько это мне будет удобно использовать, но скорее всего придется менять код передачи и обработки GET запроса.

Цитата Сообщение от atanov Посмотреть сообщение
Мой Вам совет - выкиньте jquery и изучайте js. Так поймёте нюансы, а потом, если захотите возьмёте какую-нибудь библиотеку посовременнее,
Так jquery на всех сайтах и версии новые выходят.

PS:
Как же тогда поисковики запросы передают на сервер. В url вижу свой запрос. Значит передается get-ом. Так? Пробелы плюсом заменены, ладно. При этом в поле ввода поискового запроса все чисто и красиво. Корректно работают стрелки перемещения по истории поиска.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2022, 12:56
Помогаю со студенческими работами здесь

Как сделать чтобы сервер на winsock ожидал клиента на любой порт??
Как сделать чтобы сервер на winsock ожидал клиента на любой порт??

Как подписать любой текст после цифр?
Добрый день, с отчетами в аксессе плотно не работал, может быть это элементарные вещи... Первая задача- нужно в отчете после того как...

Как сделать чтобы на картинки был любой текст?
Как сделать чтобы на картинки был любой текст??? или например яхочу чтобы на картинки был виден (часы и дата) как это сделать??? дайте...

Как на клиенте загрузить текст из textarea в визуальный редактор(любой)
Как на клиенте загрузить текст из textarea в визуальный редактор(любой). Видел такую штучку - форма с текстарием, нажимаешь на ссылку и...

Как соединить текст и любой файл в один массив byte[]
Здравствуйте. Подскажите пожалуйста как можно соединить текст и файл в один массив byte . У меня чегото чушь всякую пишет :( Пытаюсь делать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru