zoukankan      html  css  js  c++  java
  • 前后端联调之Form Data与Request Payload

    描述

    在beego框架中,用this.input(),没有获取到表单参数,对比发现,从chrome-dev-tools(F12调试器)中看到的FormData与RequestBody了。Request Payload无法获取到,FormData可以获取到。建议先读前后端联调之Form Data与Request Payload,你真的了解吗?这篇文章(有点懒,不想搬),理解上面问题原因。

    对比代码

    form Data的代码

    var url = '/xxxx/update'
    var requestBody = $('body').find("#form-{{.RandomId}}").serializeArray();
    console.log(requestBody)
    /*
    (3) [{…}, {…}, {…}]
    0: {name: "Period", value: "1"}
    1: {name: "Time", value: ""}
    2: {name: "Range", value: "LastWholeWeek"}
    length: 3
    __proto__: Array(0)*/
    $.ajax({
        type: 'POST',
        datatype: 'json',
        url: url,
        data: requestBody,
        success: function (json) {
            BJUI.dialog('closeCurrent', 'datagrid-dialog-edit')
            BJUI.navtab('refresh')
        },
        error: BJUI.ajaxError
    })
    

    Content-Type: application/x-www-form-urlencoded; charset=UTF-8

    form data: Period=2&Time=&Range=LastWholeWeek

    Request Payload的代码

    代码一:

    var url = '/xxxx/update'
    var requestBody = $('body').find("#form-{{.RandomId}}").serializeArray();
    console.log(requestBody)
    /*
    (3) [{…}, {…}, {…}]
    0: {name: "Period", value: "1"}
    1: {name: "Time", value: ""}
    2: {name: "Range", value: "LastWholeWeek"}
    length: 3
    __proto__: Array(0)*/
    $.ajax({
        type: 'POST',
        datatype: 'json',
        url: url,
        data: requestBody,
        Content-Type: "application/json;charset=UTF-8",
        success: function (json) {
            BJUI.dialog('closeCurrent', 'datagrid-dialog-edit')
            BJUI.navtab('refresh')
        },
        error: BJUI.ajaxError
    })
    

    Content-Type: application/json;charset=UTF-8
    Request Payload: Period=2&Time=&Range=LastWholeWeek

    代码2:

    var url = '/xxxx/update'
    var requestBody = $('body').find("#form-{{.RandomId}}").serializeJson();
    console.log(requestBody)
    /*
    {Period: "1", Time: "", Range: "LastWholeWeek"}
    Range: "LastWholeWeek"
    Period: "1"
    Time: ""
    __proto__: Object*/
    $.ajax({
        type: 'POST',
        datatype: 'json',
        url: url,
        data: JSON.stringify(requestBody),
        Content-Type: "application/json;charset=UTF-8",
        success: function (json) {
            BJUI.dialog('closeCurrent', 'datagrid-dialog-edit')
            BJUI.navtab('refresh')
        },
        error: BJUI.ajaxError
    })
    

    Content-Type: application/json;charset=UTF-8
    Request Payload: {Period: "1", Time: "", Range: "LastWholeWeek"}

    结论

    数据发送

    Content-Type,结合实际需求设置。否则无法正确获取数据。

    数据获取

    正如上面文章说的,不管哪种形式,上面的数据都在http请求的消息体中。在beego框架中,request payload的数据的确获取到了(在requestbody中),但是无法通过已有的接口按照表单获取出来,待研究。

    参考文章

  • 相关阅读:
    团队冲刺第五天
    团队冲刺第四天
    学习进度条---第八周
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
    学习进度条--第七周
    课堂练习--第7周(两人结对)
    学习进度条--第六周
    第一次 在Java课上的编程
  • 原文地址:https://www.cnblogs.com/meiguhuaxian/p/14143122.html
Copyright © 2011-2022 走看看