使用jQuery提交html内容的表单

时间:2009-12-28 05:20:53

标签: jquery html

<form id="form1">
<ul>
<li>Content</li>
<li>Content</li>
<li>Content</li>
</ul>
<input type="submit" value="Submit" />
</form>

我想在点击提交按钮时发送ul标签中的内容。

提交的数据应该是

<li>Content</li>
<li>Content</li>
<li>Content</li>

我如何在jquery中使用适当的char来编写它。逃避&lt;&gt;的

3 个答案:

答案 0 :(得分:3)

要挂钩提交,请执行以下操作:

$("#form1").submit(function () {
  // do stuff
  return false;
});

// do stuff部分替换为以下之一:

$.ajax({
  url: "...",
  type: "POST",
  data: $("#form1 ul").html()
});

如果你想逃避它,我会在服务器端这样做。您也可以执行此操作,以执行客户端转义:

$.ajax({
  url: "...",
  type: "POST",
  data: escape($("#form1 ul").html())
});

我认为最优雅的解决方案是将其作为JSON发送到服务器。

$.ajax({
  url: "...",
  dataType: "json",
  // the value of `type` is irrelevant here
  data: {html: $("#form1 ul").html(), moreMetadDtaIfYouWant: 5}
});

但那是你的电话;)

答案 1 :(得分:2)

免责声明:这是我基于其他AJAX答案的替代方案。

您可以通过使用javascript设置隐藏字段的值来完成此操作。此外,您的表单需要一个“操作”属性 - 它必须提交到某个地方。

<!-- HTML -->
<form action="/my_script.php" id="my_id">
  <ul>
    Stuff...
  </ul>
  <input type="hidden" name="html />
</form>

剧本:

$("#my_id").submit(function () {
  var html = $(this).find("ul").html();
  $(this).find("input[name=html]").val(escape(html));
  // don't return false, we want the submit event to go through
});

表单将会提交,隐藏字段会将<ul></ul>标记中的转义HTML作为值。

答案 2 :(得分:0)

嗯,我认为你必须在某个表单字段中提交你的值,所以你首先必须创建一些类型的输入,如果我不得不冒险猜测,可能隐藏在你的表单中

<input id="your_id" type="hidden" />

然后使用jquery,您可以在表单的onSubmit中执行此操作...

$("#form1").submit(function(){
  $("#your_id").val($("#form1 ul").html());
} 

我不确定该表单是否会自动转义您提交或不提交的HTML。

相关问题