【问题标题】:AJAX forms partially worksAJAX 表单部分有效
【发布时间】:2019-08-21 21:57:25
【问题描述】:

我可以提交这样的表单并且它可以工作:

$(document).on('click', '#someLink', function() {
  var frm = $('#myCustomForm');
  frm.submit();
});

但是,当我提交如下相同的表单时,该表单没有被提交:

$(document).on('click', '#someLink', function() {
  var frm = $('#myCustomForm');
  frm.submit(function(e) {
    $.ajax({
      type: 'POST',
      url: '/comments/new/',
      dataType: 'application/json',
      data: frm.serialize(),
      success: function(data) {
        alert('successful');
      },
      error: function(data) {
        alert('something went wrong');
      }
    });
    e.preventDefault();
    return false;
  });
});

我在这里做错了什么?

【问题讨论】:

  • 您可以在表单中包含代码吗?
  • frm.submit(function(e) {}) frm.submit(function(e) { 部分.. .. 只需运行 ajax 代码,因为您不想提交表单。

标签: javascript jquery ajax forms


【解决方案1】:

这两个代码完全相反。 frm.submit(function(e) {}) 为表单提交分配一个函数,因此您需要再次提交表单。

您只想运行 Ajax 代码,因此只需运行代码即可。

$(document).on('click', '#someLink', function(e) {
  var frm = $('#myCustomForm');
  $.ajax({
      ...
  });
  e.preventDefault();
});

【讨论】:

  • 我真的想提交表单。您的代码未提交。那么我该如何提交呢?我需要使用 ajax 调用提交调用
  • 为什么会出现 ajax 请求?
  • 表单与 Ajax 请求没有任何关系......所以不知道为什么你认为你需要提交表单。
【解决方案2】:

document 准备好时,您可以附加您的事件处理程序。另外,return false; 足以满足您的 submit 处理程序。

$(document).ready(function() {
  var frm = $('#myCustomForm');
  frm.on('submit', function() {
    $.ajax({
      type: 'POST',
      url: '/comments/new/',
      dataType: 'application/json',
      data: frm.serialize(),
      success: function(data) {
        alert('successful');
      },
      error: function(data) {
        alert('something went wrong');
      }
    });
    return false;
  });
});

更新

我认为您应该仔细查看您的网址/comments/new/ 以确保它是正确的。更好的是,只需将表单的 action 属性作为 url 即可。

url: frm.attr('action'),

改变它,看看它是否有效。

【讨论】:

  • 我真的想提交表单。您的代码未提交。那么我该如何提交呢?我需要使用 ajax 调用提交调用
  • 为什么 ajax 请求发生在 url /comments/new/ 上?根本没有发生 ajax 请求。
  • @asdfkjasdfjk,如果您收到任何警报(是吗?),那么 ajax 请求请求就发生了。这是一个异步请求。所以页面不会像普通提交那样刷新
猜你喜欢
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
相关资源
最近更新 更多