Submitting HTML form using Jquery AJAX

前端 未结 3 1372
闹比i
闹比i 2020-11-22 03:56

Im trying to submit a HTML form using AJAX using this example.

My HTML code:

相关标签:
3条回答
  • 2020-11-22 04:33
    var postData = "text";
          $.ajax({
                type: "post",
                url: "url",
                data: postData,
                contentType: "application/x-www-form-urlencoded",
                success: function(responseData, textStatus, jqXHR) {
                    alert("data saved")
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log(errorThrown);
                }
            })
    
    0 讨论(0)
  • 2020-11-22 04:40

    Quick Description of AJAX

    AJAX is simply Asyncronous JSON or XML (in most newer situations JSON). Because we are doing an ASYNC task we will likely be providing our users with a more enjoyable UI experience. In this specific case we are doing a FORM submission using AJAX.

    Really quickly there are 4 general web actions GET, POST, PUT, and DELETE; these directly correspond with SELECT/Retreiving DATA, INSERTING DATA, UPDATING/UPSERTING DATA, and DELETING DATA. A default HTML/ASP.Net webform/PHP/Python or any other form action is to "submit" which is a POST action. Because of this the below will all describe doing a POST. Sometimes however with http you might want a different action and would likely want to utilitize .ajax.

    My code specifically for you (described in code comments):

    /* attach a submit handler to the form */
    $("#formoid").submit(function(event) {
    
      /* stop form from submitting normally */
      event.preventDefault();
    
      /* get the action attribute from the <form action=""> element */
      var $form = $(this),
        url = $form.attr('action');
    
      /* Send the data using post with element id name and name2*/
      var posting = $.post(url, {
        name: $('#name').val(),
        name2: $('#name2').val()
      });
    
      /* Alerts the results */
      posting.done(function(data) {
        $('#result').text('success');
      });
      posting.fail(function() {
        $('#result').text('failed');
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <form id="formoid" action="studentFormInsert.php" title="" method="post">
      <div>
        <label class="title">First Name</label>
        <input type="text" id="name" name="name">
      </div>
      <div>
        <label class="title">Last Name</label>
        <input type="text" id="name2" name="name2">
      </div>
      <div>
        <input type="submit" id="submitButton" name="submitButton" value="Submit">
      </div>
    </form>
    
    <div id="result"></div>


    Documentation

    From jQuery website $.post documentation.

    Example: Send form data using ajax requests

    $.post("test.php", $("#testform").serialize());
    

    Example: Post a form using ajax and put results in a div

    <!DOCTYPE html>
    <html>
        <head>
            <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        </head>
        <body>
            <form action="/" id="searchForm">
                <input type="text" name="s" placeholder="Search..." />
                <input type="submit" value="Search" />
            </form>
            <!-- the result of the search will be rendered inside this div -->
            <div id="result"></div>
            <script>
                /* attach a submit handler to the form */
                $("#searchForm").submit(function(event) {
    
                    /* stop form from submitting normally */
                    event.preventDefault();
    
                    /* get some values from elements on the page: */
                    var $form = $(this),
                        term = $form.find('input[name="s"]').val(),
                        url = $form.attr('action');
    
                    /* Send the data using post */
                    var posting = $.post(url, {
                        s: term
                    });
    
                    /* Put the results in a div */
                    posting.done(function(data) {
                        var content = $(data).find('#content');
                        $("#result").empty().append(content);
                    });
                });
            </script>
        </body>
    </html>
    

    Important Note

    Without using OAuth or at minimum HTTPS (TLS/SSL) please don't use this method for secure data (credit card numbers, SSN, anything that is PCI, HIPAA, or login related)

    0 讨论(0)
  • 2020-11-22 04:53

    If you add:

    jquery.form.min.js

    You can simply do this:

    <script>
    $('#myform').ajaxForm(function(response) {
      alert(response);
    });
    
    // this will register the AJAX for <form id="myform" action="some_url">
    // and when you submit the form using <button type="submit"> or $('myform').submit(), then it will send your request and alert response
    </script>
    

    NOTE:

    You could use simple $('FORM').serialize() as suggested in post above, but that will not work for FILE INPUTS... ajaxForm() will.

    0 讨论(0)
提交回复
热议问题