如何在jquery中序列化表单以便在不提交表单的情况下在url哈希中使用?

时间:2012-09-19 13:50:23

标签: javascript jquery ajax jquery-bbq

我想创建某些html表单的字符串表示形式,以便存储在url的哈希部分。

我懒洋洋地希望会有这样的方法和jquery。 serialize()似乎可以解决问题,除了在我看到的所有示例中,它使用表单提交的“this”对象。在我的网站上,表单没有提交,我只是希望能够序列化它们。我试过了:

params['formParams'] = $("#"+currentSearchForm).serialize();

但我得到一个空字符串而不是序列化表单。

我应该欺骗表单提交并在其中生成序列化字符串,然后取消默认事件或其他内容吗?似乎有点做作..?

或者可能是我正在做序列化错误..

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

首先确保您的表单元素具有'name'属性。这可能是不工作序列化的原因。

如果您想在提交时执行此操作,然后取消提交,则可以执行以下操作:

$("#formid").submit(function() {
  //whatever
  return false; //<- this cancels the submit
});

答案 1 :(得分:0)

jQuery .serialize()应该可以解决问题。您只需使用$('form').serialize()即可获取表单数据。

这是一个演示http://jsfiddle.net/muthkum/x6n2e/1/。一个在提交表单之前被调用。单击“提交”按钮时会调用另一个。两者都有效。

答案 2 :(得分:0)

就像

一样简单
$( YOUR_INPUTS_TO_BE_SERIALIZED ).serialize() ...

文档HERE了解更多信息

请注意,您可能需要转换输出字符串以使其适合哈希授予的字符:

THIS THREAD may help you