将Javascript变量的值发送到Go变量中

时间:2019-08-30 18:18:36

标签: javascript go

我需要在Go代码(JS2GO)中读取Javascript变量(v.Hostname)的值。我不知道该怎么做。

我已经读过一些关于syscall/js的信息,但是找不到任何东西。

这是Javascript代码:

    $(document).on("keypress", "input", function(e){
      if(e.which == 13){
          var JS2GO = $(this).val();
      }
    });

这是我的.gohtml文件中的表格。

    <form method="POST">
      <input id="myInput" type="text" name="host">
      <input type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;" tabindex="-1">
    </form>

P.S。

我想出了这个解决方案,因为我无法单击“提交”按钮(它是隐藏的),因此它不会将结果发送到我的Go代码中。这意味着我无法通过以下代码input来读取v.Host = r.FormValue("host")的值。如果我的方法不是最佳方法,请告诉我。

1 个答案:

答案 0 :(得分:0)

基于@ G.aziz的评论,我发现了一个提到here的解决方案。就我而言,它是通过以下方式解决的:

<form method="POST">
    <input id="myInput" type="text" name="host" style="min-width: 220px;" placeholder="Hostname; e.g. crowe.org">
    <input id="submitBtn" type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;" tabindex="-1">
</form>

和Ajax代码:

$(document).ready(function () { 
    $('#submitBtn').click(function () {
        $.ajax({
          url: '/',
          type: 'POST',
          dataType: 'HTML',
          data : {
            ajax_post_data: $('#myInput').val()
          },
        });
     });
});

然后在我的Go文件中,我可以得到这样的值

if r.Method == "POST" {
    v.Host = r.FormValue("ajax_post_data")
}