#javascript #jquery #mysql #blob #truncate
#javascript #jquery #mysql #большой двоичный объект #усекать
Вопрос:
У меня есть форма, где люди могут публиковать обзоры книг. В них указывается название книги, имя автора и текст рецензии. Когда пользователь нажимает кнопку, чтобы сохранить обзор, вызывается функция javascript:
function gravarResenha(id) {
var livro = $("#resenhatit").val();
var autor = $("#resenhaaut").val();
var resen = $("#resenhatex").val();
if ((livro != "") amp;amp; (autor != "") amp;amp; (resen != "")) {
$.ajax({
type: "POST",
url: "resenha/gravar/id/" id "/livro/" livro "/autor/" autor "/texto/" resen,
success: function(res) {
if( res == 1 ) {
carregaPagina( 'secliteratura' , 'col02' );
} else {
alert( "Problemas no cadastramento da resenha. Tente novamente." );
}
},
error: function(res) {
alert( "Problemas no cadastramento da resenha. Tente novamente." );
}
});
} else {
alert( "Impossível postar uma resenha vazia." );
}
}
Переменная resen получает значение текстовой области, идентификатором которой является #resenhatex. Это значение усекается.
Сначала я подумал, что это из-за того, что я использовал текстовое поле в моей таблице MySQL. Затем я изменил его на поле LONGBLOB, учитывая, что обзоры могут быть немного длинными.
Я также добавил этот тип: «POST» в мой вызов jQuery AJAX, потому что я напомнил, что метод GET имеет некоторые ограничения, когда дело доходит до размера отправляемых данных.
Даже внося все эти изменения, я все равно получаю то же усеченное значение, когда отправляю большие обзоры.
Есть предложения?
Комментарии:
1.
max-length
в текстовой области или конфигурации редактора? Всегда можно проверить его длину перед отправкой, при получении и после вставки, чтобы увидеть, где он может быть обрезан2. Редактора нет, просто обычная текстовая область. Вы знаете, существует ли максимальная длина по умолчанию для такого рода html-объектов? Я не установил максимальную длину для этой текстовой области.
3. Возможно, вы уже указали метод POST, но вы все еще вводите свои данные в URL, поэтому они по-прежнему передаются через GET … используйте POST правильно и укажите данные для отправки в виде объекта.
4. Действительно не знал этого, @CBroe. Собираюсь попробовать это сейчас!
5. Иди и сделай это. (Но это, скорее всего, скорее не проблема GET vs POST, а скорее из-за того, что вы пренебрегаете тем, чтобы должным образом экранировать данные, которые вы помещаете в контекст URL.)
Ответ №1:
Проблема заключалась в том, что хеппенинг возникал каждый раз, когда у меня появлялся вопросительный знак (?) внутри переданного текста.
Я сделал следующее, чтобы решить проблему:
var myresen = $("#resenhatex").val();
myresen = myresen.replace(/?/g, "?");
И тогда это сработало отлично!