【问题标题】:Golang - multiple response values in web appGolang - Web 应用程序中的多个响应值
【发布时间】:2017-04-25 20:48:36
【问题描述】:

我编写简单的 Go 网络应用程序。在这个应用程序中,我发送 ajax 发布请求并返回简单的“hello world!”字符串并在控制台中打印,但有些奇怪。控制台输出中有三个响应值。一个为空值,两个响应为“hello world!”字符串值。我的代码有什么问题?

Golang 代码:

package main

import (
    "io"
    "net/http"
    "html/template"
)

func main() {
     http.HandleFunc("/ajax", ajaxHandler)
     http.HandleFunc("/script.js", srcHandler)
     http.HandleFunc("/", mainHandler)
     http.ListenAndServe(":8080", nil)
}

func mainHandler(w http.ResponseWriter, r *http.Request) {
    t, err := template.ParseFiles("home.html")
    if err != nil {
        http.Error(w, http.StatusText(500), 500)
        return
    }

    err = t.Execute(w, nil)
    if err != nil {
        http.Error(w, http.StatusText(500), 500)
        return
    }
}

func srcHandler(w http.ResponseWriter, r *http.Request) {
     http.ServeFile(w, r, "script.js")
}

func ajaxHandler(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hello World!")
}

Javascript 代码:

(function () {
    window.onclick = function () {
        var req = new XMLHttpRequest();
        req.open("post", "/ajax", true);
        req.send();

        req.onreadystatechange = function () {
            console.log(req.responseText);
       }
   };
}());

【问题讨论】:

  • Go 代码看起来没问题,因此您的问题可能出在未列出的客户端代码中。
  • 你确定第一个输出字符串来自那个端点吗?显示网络标签截图和你对应的js代码。

标签: go


【解决方案1】:

您还需要检查req.readyState:

   req.onreadystatechange = function () {
        if (req.readyState === XMLHttpRequest.DONE) {
            console.log(req.responseText);
        }
   }

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多