为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Jquery 和 golang 中的输入 json 数据进行 ajax 调用?

如何使用 Jquery 和 golang 中的输入 json 数据进行 ajax 调用?

Go
至尊宝的传说 2021-12-27 17:49:01
我正在尝试在 Jquery 中进行 ajax 调用,但收到空响应。但是当我尝试通过 curl 做同样的事情时,我成功了。这是我的JS,time = new Date($.now());requestJSON = '{"Method":"GET","AppName":"Proline","ServiceURL":"http://localhost:8081/api/services/tags/","Properties":null,"Object":"","Timestamp":"'+time+'"}'$.ajax({  type: "GET",  url: "http://localhost:8081/api/services/tags/",  // The key needs to match your method's input parameter (case-sensitive).  data: requestJSON,  contentType: "application/json; charset=utf-8",  dataType: "json",  success: function(data){alert(data);},  failure: function(errMsg) {      alert(errMsg);  }});我也试过,dataType: "jsonp"但没有运气。curl 命令在这里,curl --data '{"Method":"GET","AppName":"Proline","ServiceURL":"http://localhost:8081/api/services/tags/","Properties":null,"Object":"","Timestamp":"2016:03:27 00:08:11"}'-X GET http://localhost:8081/api/services/tags/我在 golang 中有服务器代码。我已经将标题设置为Access-Control-Allow-Headers:*. 这是我的服务器处理程序。 func tagsHandler(w http.ResponseWriter, r *http.Request, extra []string) {    if origin := r.Header.Get("Origin"); origin != "" {            w.Header().Set("Access-Control-Allow-Origin", origin)            w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")            w.Header().Set("Access-Control-Allow-Headers",                    "*")    }    // Stop here if its Preflighted OPTIONS request    if r.Method == "OPTIONS" {            return    }    var response []byte    body, err := ioutil.ReadAll(r.Body)    if err != nil {        log.Printf("FATAL IO reader issue %s ", err.Error())    }具体来说,我在服务器端收到空请求正文。有人可以帮我吗?
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

问题是调用没有在正文中发送请求数据 [但不知何故curl工作正常]。当我尝试获取body, err := ioutil.ReadAll(r.Body)它时,它给出了空值。所以我改变了从r.Form


r.ParseForm()

var body []byte

for key, _ := range r.Form {

    body = []byte(key)

    break

}

r.Form给一张地图。所以我正在遍历地图并获取 req 数据。这个SO帖子给出了解决方案。可能对其他人有帮助:)


查看完整回答
反对 回复 2021-12-27
?
HUH函数

TA贡献1836条经验 获得超4个赞

您的数据已在 console.log 中字符串化


 time = new Date($.now());

    requestJSON = '{"Method":"GET","AppName":"Proline","ServiceURL":"http://localhost:8081/api/services/tags/","Properties":null,"Object":"","Timestamp":"'+time+'"}'

    $.ajax({

      type: "GET",

      url: "http://localhost:8081/api/services/tags/",

      data:JSON.stringify(requestJSON),

      contentType: "application/json; charset=utf-8",

      dataType: "json",

      success: function(data){alert(data);},

      failure: function(errMsg) {

          alert(errMsg);

      }

    });


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信