MySQL, усекающий данные

#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, "?");
  

И тогда это сработало отлично!