Ajax submit form datatype issue

2019-09-18 14:08发布

I am having some problems about using ajax to submit a html input form, and it seems like something is wrong with the datatype.

The background:

  1. sending an input form from app engine to aws
  2. creating a pdf file on aws, saving it on s3, and sending back the hyperlink to app engine
  3. on app engine side, generating a html page with the hyperlink
  4. if the ajax call is successful, redirect to the page created on Step 3

Input form:

<form id="pdf_post">
    <table class="getpdf popup">
        <!-- contents include 1. string type html table and jqplots -->
    </table>
</form>

Ajax call:

    $(document).ajaxStart(function(){
        alert('start');
    });

    $.ajax({
        type: "post",
        url: "/pdf.html",
        data: $('#pdf_post').serialize(),
        dataType: "html",
        success: function () {
            alert('success');
            window.location = "/pdf.html";
        },
        error: function (data) {
            console.log(data)
            alert('error');
        },
    });

Based on the ajax call, my browser will be redirected to a page with hyperlink. But this never happened, and the results are related to values in the dataType:

  1. dataType: "html", ajax success fired, but I got error msg: 405 Method Not Allowed The method GET is not allowed for this resource.
  2. dataType: "json", ajax error fired
  3. dataType: "data", ajax error fired

I have checked the server side, it seem like a pdf was always generated no matter what dataType I selected. Also when ajax error was fired, from the console.log(data), I can see the webpage with the correct hyperlink. Can anyone give me some suggestions? Thanks!

0条回答
登录 后发表回答