尝试对来自 onSubmit='return function(this)' 的参数使用序列化时失败

Failure when trying to use serialize on argument from onSubmit='return function(this)'

这里是 javascript 的新手,很抱歉,如果这是初级...

所以我有一个表格,我想在确认后用它做一些 AJAX(提交后的确认框)。问题的最外层是 serialize() 不工作——它 returns 是一个空字符串。显然,我怀疑表面下还有更多关于为什么它不起作用的原因……

我的目标是让表单转到 onsubmit 方法 (confirm_delete()),然后完成一些 AJAX(当用户确认希望删除时)。无论哪种方式,我都不希望表单提交和加载新页面——因此 'return false;'——我希望 AJAX 接管。

所以……这是表格:

<form class='delete_item' method='post' onSubmit='return confirm_delete(this)'>
   //lots of inputs here. . . .                             
   <button type='submit' class='btn-xs btn-danger remove_submit'>X</button>
</form>

这是我的 javascript/AJAX 尝试……

function confirm_delete(form){
    var r = confirm("Are you sure you want to delete?");
    var data = form.serialize();
//  var x = 9;
    if (r == true) {
        $.ajax({
            type: 'post',
            data: data,
            datatype: 'json',
            success: function(response){
               alert('hi');
               //do stuff….
            }
        });
          return false;
        } else {
           return false;
        }   
    }

谢谢。

.serialize 是一个 jQuery 方法,不是原生的 JavaScript 方法,所以你需要利用 jQuery 包装器 ($()) 来使用它

//..
function confirm_delete(form){
    var r = confirm("Are you sure you want to delete?");
//note the $(form).serialize() vs form.serialize()
    var data = $(form).serialize(); 
//rest of your code...