jQuery,如何在不跳转页面的情况下提交表单

9

我希望能在不离开当前页面的情况下提交表单,因此我使用:

$('.myForm').on('submit', function(){
        $.ajax({
            url: $(this).attr('action'),
            type: $(this).attr('method'),
            data: $(this).serialize(),
            success: function(html) {
            alert('ok');
            }
        });
    return false; 
});

但它不起作用...有什么想法吗?

以什么方式,“不起作用”? - Boris the Spider
请确保您的表单具有类名“myForm”。 - Debasish Chowdhury
1
"return false" 在 jQuery 中的意思是 "继续执行"。 - Travis J
3个回答

10

请按照以下步骤进行:

$(document).on('submit', '.myForm', function(e) {
     $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: $(this).serialize(),
        success: function(html) {
        alert('ok');
        }
    });
    e.preventDefault();
});

你需要在函数中实际传入event参数。 - Boris the Spider
这仍然会将我带到一个新页面。 - Daniel C Jacobs
@DanielCJacobs,您的URL在使用时将不会指向同一页... - qɐʇǝɥɐW

7

这里有一个例子

<form name="frm" method="POST" action="">
 <input type="text" name="name" id="name" value="" />
 <input type="text" name="last_name" id="last_name" value="" />
 <input type="submit" name="Update" id="update" value="Update" />
</form>

jQuery部分
$("#update").click(function(e) {
  e.preventDefault();
  var name = $("#name").val(); 
  var last_name = $("#last_name").val();
  var dataString = 'name='+name+'&last_name='+last_name;
  $.ajax({
    type:'POST',
    data:dataString,
    url:'insert.php',
    success:function(data) {
      alert(data);
    }
  });
});

insert.php页面

<?php
  $name = $_POST['name'];
  $last_name = $_POST['last_name'];
  $insert = "insert into TABLE_NAME values('$name','$last_name')";// Do Your Insert Query
  if(mysql_query($insert)) {
   echo "Success";
  } else {
   echo "Cannot Insert";
  }
?>

希望这可以帮助到您。

我会选择这个作为最佳答案,尽管我更喜欢用户反馈来自客户端(而不是PHP)。 - johnnaras

2

use event.preventDefault();

$('.myForm').on('submit', function(event){
    event.preventDefault(); 
    $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: $(this).serialize(),
        success: function(html) {
        alert('ok');
        }
    });
    //return false; 
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接