【问题标题】:MySQL truncating dataMySQL 截断数据
【发布时间】:2014-08-26 20:09:11
【问题描述】:

我有一个表单,人们可以在其中发布书评。他们给出了书名、作者姓名和评论文本。当用户单击按钮保存评论时,将调用一个 javascript 函数:

function gravarResenha(id) {
    var livro = $("#resenhatit").val();
    var autor = $("#resenhaaut").val();
    var resen = $("#resenhatex").val();
    if ((livro != "") && (autor != "") && (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接收id为#resenhatex的textarea的值。该值被截断。

起初我以为是因为我在 MySQL 表中使用了 TEXT 字段。然后我将其更改为 LONGBLOB 字段,考虑到评论可能有点长。

我还在我的 jQuery AJAX 调用中添加了这种类型:“POST”,因为我提醒了 GET 方法在发送的数据大小方面有一些限制。

即使做了所有这些更改,当我发送更大的评论时,我仍然会得到相同的截断值。

有什么建议吗?

【问题讨论】:

  • max-length 在 textarea 或编辑器配置上?在发送前、接收时和插入后总是可以检查它的长度,看看它可能在哪里被切断
  • 没有编辑器,只有一个普通的文本区域。你知道这种 html 对象是否有默认的最大长度吗?我没有为此文本区域设置最大长度。
  • 您现在可能已经指定了 POST 方法,但您仍在将数据放入 URL,因此它仍然通过 GET 传输……使用 POST 正确并将数据指定到作为对象发送。
  • 真的不知道这个,@CBroe。现在就去试试!
  • 去做吧。 (但这很可能不是 GET 与 POST 的问题,而是您忽略了正确转义要放入 URL 上下文的数据。)

标签: javascript jquery mysql blob truncate


【解决方案1】:

每当我在传递的文本中有一个问号 (?) 时,问题就出现了。

我做了以下来解决这个问题:

var myresen = $("#resenhatex").val();
myresen = myresen.replace(/\?/g, "%3F");

然后它运行良好!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2015-10-15
    • 2012-06-02
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多