【问题标题】:jQuery: Possible to use object and serialize for passing parameters?jQuery:可以使用对象和序列化来传递参数吗?
【发布时间】:2011-10-25 09:33:32
【问题描述】:
    $.post('/ur.l'
          , jQuery('selectors').serialize() 
                               + '&textareaname=" + escape( $("#textarea").val() )
          , function(data) { ... } 
          }
    );

    $.post('/ur.l'
          , {'foo':'bar', 'foobar','qazbar'}
          , function(data) { ... }
    );

问题

  1. 是否可以将对象组合成{...}的jQuery序列化?

  2. jQuery似乎没有序列化textareas,有没有比上面更好的方法? 我试过看到textarea在jQuery对象中,但是文本是空白的:

    jQuery('input, textarea').serialize()
    

【问题讨论】:

    标签: javascript jquery ajax post


    【解决方案1】:
    1. jQuery.param 会将对象序列化为 url 编码的字符串。然后您可以将它们组合在一起。

    2. serialize 确实适用于文本区域。确保您在 textarea 上有一个有效的名称,并且它没有被禁用。

    【讨论】:

    • 是的,我认为我的代码使用了param,但是我几乎可以确定 textarea 没有被序列化。我在 firebug 中进行了测试,它表明选择器正确找到了 textarea,但它没有被序列化。我先尝试了很多文字,然后我只用了几个词,都没有奏效。下周我会检查更多。
    • 是的,我在这里测试过 (jsfiddle.net/vol7ron/PGtPa),它似乎可以工作,但在办公室肯定不行……我们拭目以待。
    • 它仍然无法正常工作,但无论如何我都会接受,我必须调试并看看发生了什么。可能是浏览器问题。
    • Josiah - “......而且它没有被禁用”这让我很生气。
    • 例如<textarea name="TextArea1" disabled></textarea> disabled 属性通知serialize 函数忽略此元素。禁用的 html 表单元素不会与自然表单提交一起提交。
    【解决方案2】:

    你应该尝试给你的表单一个 id 并通过它来引用表单参数。例如,如果您的表单的 ID 为#form。

    $("#form").submit( function () {    
        $.post(
       'ur.l',
        $(this).serialize(),
        function(data){
    
        });
        return false;   
      });   
    });
    

    和 $(this) 将是所有表单参数的内容。另外,如果您还没有这样做,请查看标题。

    【讨论】:

    • 我最初确实尝试过,并意识到我的 textarea 没有被序列化。不过,表格中有很多我不想被发送的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多