$.post() doesn't send data as json but as x-www-form-urlencoded instead

后端 未结 4 1132
傲寒
傲寒 2020-12-14 00:11

This one is really weird. I\'ve multiple $.post() in the code but there is one dunno why sends the json parameters as x-www-form-urlencoded instead

相关标签:
4条回答
  • 2020-12-14 00:30

    Because $.post() is for sending form-like requests. $.ajax is for sending whatever you want to. See contentType in $.ajax page for more information.

    Quote:

    When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases. If you explicitly pass in a content-type to $.ajax() then it'll always be sent to the server (even if no data is sent). Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side.

    0 讨论(0)
  • 2020-12-14 00:30

    this also works for me

    $.ajax({
      url: "mydomain.com/url",
      type: "POST",
      dataType: "xml/html/script/json", // expected format for response
      contentType: "application/json", // send as JSON
      data: JSON.stringify(data),
    
      complete: function() {
        //called when complete
      },
    
      success: function() {
        //called when successful
     },
    
      error: function() {
        //called when there is an error
      },
    });
    
    0 讨论(0)
  • 2020-12-14 00:30

    you can also force your data to be a json in the success function: data = JSON.parse(data);

    0 讨论(0)
  • 2020-12-14 00:39

    If you want to send the data as json then use the $.ajax function

    You can specify type post and dataType json.

    $.ajax({
      url: "mydomain.com/url",
      type: "POST",
      dataType: "xml/html/script/json", // expected format for response
      contentType: "application/json", // send as JSON
      data: $.param( $("Element or Expression") ),
    
      complete: function() {
        //called when complete
      },
    
      success: function() {
        //called when successful
     },
    
      error: function() {
        //called when there is an error
      },
    });
    

    Taken from ajax documentation

    http://api.jquery.com/jQuery.ajax/

    contentTypeString
    Default: 'application/x-www-form-urlencoded; charset=UTF-8'
    
    0 讨论(0)
提交回复
热议问题