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

我正在尝试在 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())

    }


具体来说,我在服务器端收到空请求正文。有人可以帮我吗?


至尊宝的传说
浏览 140回答 2
2回答

繁星淼淼

问题是调用没有在正文中发送请求数据 [但不知何故curl工作正常]。当我尝试获取body, err := ioutil.ReadAll(r.Body)它时,它给出了空值。所以我改变了从r.Formr.ParseForm()var body []bytefor key, _ := range r.Form {    body = []byte(key)    break}r.Form给一张地图。所以我正在遍历地图并获取 req 数据。这个SO帖子给出了解决方案。可能对其他人有帮助:)

HUH函数

您的数据已在 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);      }    });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go