通过$ .post()发布输入而没有<form>对象

时间:2020-09-04 13:26:14

标签: html jquery ajax

我需要在表单内实现表单-可以选择仅将来自表单的2个输入发布到服务器。我以为解决方案是通过$.post()方法发送它们,但我不知道如何正确准备请求。

html:

<form>
  <input type="text" id="1">
  <input type="text" id="2">
  <div>
    <input type="text" id="3">
    <input type="text" id="4">
    <button type="submit" id="part_submit">
      Parially submit
    </button>
  </div>
  <input type="text" id="5">
  <button type="submit" id="submit">
    Submit
  </button>
</form>

js:

$("#part_submit").on("click", (e) => {
    e.preventDefault();
    let value1 = $("#3").val();
  let value2 = $("#4").val();
  let data = {"value1" : value1, "value2": value2};
  let sdata = data.serialize();
  $.post("my_server_url", sdata, function(data){
    console.log(data);
  });
})

结果: TypeError: data.serialize is not a function"

我意识到通常我想发布一个表单,但我必须这样做:$(form).serialize(),虽然可以,但是我不能将表单嵌套到表单中。那么该怎么做呢?

1 个答案:

答案 0 :(得分:-1)

您必须调用.val()函数以获取字段中的值。另外,您仅在表单或表单字段上使用.serialize(),只需将对象传递到$.post()

$("#part_submit").on("click", (e) => {
    e.preventDefault();
    let value1 = $("#3").val();
    let value2 = $("#4").val();
    let data = {"value1" : value1, "value2": value2};
    $.post("my_server_url", data, function(data){
        console.log(data);
    });
})