如何使用jquery ajax发送表单数据而不提交表单?

Sam*_*far 6 javascript forms ajax jquery

我的页面上有一个我不想提交的表单。这是我基本上想做的一个例子。当我单击按钮时,我希望发送 ajax 请求但不提交表单。这是单击我的按钮时将运行的函数的示例格式:

function clicked()
{
     try {
            var url = "test.php?t1=1&t2=2"
            var postData = $("#myForm").serializeArray();
            $.ajax(
            {
                url : url,
                beforeSend: function (request)
                {
                  request.setRequestHeader('Content-Type', 'text/html;   charset=utf-8');
                },
                type: "POST",
                data : postData,
                contentType: false,
                processData: false,
                success:function(data, status, xhr) 
                {
                    if(status == "success")
                    {
                        alert(data); 
                       // Do something on page
                    }
                    else
                    { 
                      // Do something on page
                    }
                },
            });  
      } 
     catch (e) 
     {
        alert("Error Adding POI:\n" + e);
     }
}
Run Code Online (Sandbox Code Playgroud)

当我使用 PreventDefault 函数禁用表单提交时,不会提交表单。但是,该表单只是将 ajax post 请求发送到我的 url“test.php?t1=1&t2=2”,而没有表单的任何输入值。如果没有preventDefault,表单将提交并导航离开页面。没有发送ajax请求。有没有办法通过ajax请求将表单数据发送到url“test.php?t1=1&t2=2”而不提交表单?

提前致谢。任何帮助是极大的赞赏。

mad*_*scu 3

尝试:

 $('input [type="submit"]').on('click',function(e){
    e.preventDefault();
    var url = "test.php?t1=1&t2=2"
                var postData = $('this').serialize();
                $.ajax(
                {
                    url : url,
                    beforeSend: function (request)
                    {
                      request.setRequestHeader('Content-Type', 'text/html;   charset=utf-8');
                    },
                    type: "POST",
                    data : postData,
                    success:function(data, status, xhr) 
                    {
                        if(status == "success")
                        {
                            alert(data); 
                           // Do something on page
                        }
                        else
                        { 
                          // Do something on page
                        }
                    },
                });  

    })
Run Code Online (Sandbox Code Playgroud)