2017-04-25 46 views
1

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

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); 
     } 
    }; 
}()); 

enter image description here enter image description here

+0

的Go代码看起来好了,您的问题可能在客户端代码,这是没有上市。 – Adrian

+0

您确定第一个输出字符串来自该终端吗?显示网络标签截图和相应的js代码。 – zerkms

回答