将Golang变量传递到Javascript中

将Golang变量传递到Javascript中,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我试图将Golang变量传递到Javascript文件中。我在网上读过多篇文章,包括。我觉得我已经很接近了,但遗憾的是,对于这个问题最雄辩的实现却让我难以理解 我正在寻找一个简单而优雅的解决方案,在Go中注入一个对象值,并在Javascript中加入一个变量。我觉得这是一个非常常见的问题,所以缺少关于这方面的清晰教程让我感到惊讶 我的第一个文件[server.go]使用Golang中的模板库(传递上下文并通过处理程序为它们提供服务)为HTML页面提供服务 type PassStruct stru

我试图将Golang变量传递到Javascript文件中。我在网上读过多篇文章,包括。我觉得我已经很接近了,但遗憾的是,对于这个问题最雄辩的实现却让我难以理解

我正在寻找一个简单而优雅的解决方案,在Go中注入一个对象值,并在Javascript中加入一个变量。我觉得这是一个非常常见的问题,所以缺少关于这方面的清晰教程让我感到惊讶

我的第一个文件[server.go]使用Golang中的模板库(传递上下文并通过处理程序为它们提供服务)为HTML页面提供服务

type PassStruct struct{
    data    []int
    number1 int
    number2 int
}

//inject the structure into render
func render(w http.ResponseWriter, tmpl string, context Context){
       //parse context and fill in templating variables using template 
 } 
我现在有了一个HTML文档,它向其中添加了一个Javascript文件

 <html>
     <head>
     //import javascript file 
     </head>
     <body>
     //some body
     </body>
 </html>

我需要将PassStruct发送到Javascript文件中,并将结构中的每个值映射到Javascript文件中的一个变量。我尝试过AJAX调用,但到目前为止还没有成功

这种方式可能有帮助:

Html:


最后,在花了两天时间解决这个问题后,我找到了一个优雅的解决方法。 我们将使用模板来解决这个问题

阅读有关golang中模板使用的信息-

下面是在javascript中传递名为golangVar的golang变量的示例代码

HTML\u文件-

<html>
<head>
    <script>
        var golangVar = "{{.}}"
        console.log(golangVar);
    </script>
 </head>
 <body>
 <!--some body-->
 </body>
</html>
还有一个额外的小费- 如果您正在使用buffalo framework for golang,则可以使用默认的plush包进行模板制作。 它与我们在这里所做的类似,只是在语法和传递html文件方面做了一点更改。 阅读-

对于大多数模板语言来说,JSON编码是最安全的方式,请看,您找到解决此问题的方法了吗?
<html>
    <head>
     <!--import javascript file -->
        <script type="text/javascript" src="static/myjs.js"></script>
        <script type="text/javascript">
            myFunc({{.}});
        </script>
     </head>
     <body>
     <!--some body-->
     </body>
</html> 
function myFunc(passStruct){
    var obj = Object();

    var data = passStruct.Data;
    var number1=passStruct.Number1;
    var number2=passStruct.Number2;

    obj.data=data;
    obj.number1=number1;
    obj.number2=number2;

    return obj;
 }
<html>
<head>
    <script>
        var golangVar = "{{.}}"
        console.log(golangVar);
    </script>
 </head>
 <body>
 <!--some body-->
 </body>
</html>
func golangHttpHandler(w http.ResponseWriter, r *http.Request) {
var golangVar string 
golangVar = "ProblemSolved" 
templ, err := template.ParseFiles("/home/PathToHTMLPage/HTML_File.html")
if(err!=nil){
    fmt.Println("Error = ",err)
}
err = templ.Execute(w, golangVar)
if(err!=nil){
    fmt.Println("Error = ",err)
}   
}