通过go将数组传递给外部js

时间:2011-06-14 07:00:30

标签: javascript go

我有一个.txt文件,其中包含三维形式的点(x,y,z)。 使用go我将点坐标提取到数组X [],Y [],Z []中。 现在我需要将这些数组传递给外部javascript(即a 功能在js)。 我该怎么做呢? 一般来说,我如何将一些参数传递给.html中的任何js函数 文件。

2 个答案:

答案 0 :(得分:1)

我会说:只是传递它们(通过引用):

function doSomethingWithPpoints(x,y,z){
   //do something with for example x[0], y[1] etc.
}
//later on
doSomethingWithPoints(points1,points2,points3);

[编辑]这可能是一个想法:将数组串行化为一个附加链接,作为查询字符串到URL:

var url = 'http://somesite.net/somefile.html'+
          '?points1=1,2,3&points2=3,2,1&points35,6,7';

现在在somefile.html的javascript中提取这样的数组:

var qstr = location.href.split('?')[1],
    points = qstr.split('&')
    pointsObj = {},
    i = 0;
    while ((i = i + 1)<points.length) {
      var point = points[i].split('=');
      pointsObj[point[0]] = point[1].split(',');
    }

这应该为对象pointsObj提供3个属性(points1-3)和数组值

//pointsObj looks like this
{ points1: [1,2,3],
  points2: [3,2,1],
  points3: [5,6,7] }

答案 1 :(得分:0)

假设你正在运行的服务器是Go程序,你应该反过来。

javascript函数向服务器执行XHR请求,询问矢量数据。然后,服务器可以选择从文本文件中读取它们(或者已经将它们存储在内存中),并将编码为json的数据发送回客户端。

的index.html:

'doXHR'方法应该对服务器执行实际的get请求。无论实施是什么,都由您来决定。为此目的,jquery框架有一个$ .ajax()方法。

 function getData() {
      doXHR({
           uri: "/getvectors", 
           success: function(data) {
                // data now holds the json encoded vector list.
                // Do whatever you want with it here. 
           }
      });
 }

在Go方面:

 func myVectorHandler(w http.ResponseWriter, r *http.Request) {
      var vectors struct {
           X []float32
           Y []float32
           Z []float32
      }

      // Fill the X/Y/Z slices here.

      // Encode it as json
      var data []byte
      var err os.Error
      if data, err = json.Marshal(vectors); err != nil {
           http.Error(w, err.String(), http.StatusInternalServerError)
           return
      }

      // Set the correct content type and send data.
      w.Headers().Set("Content-Type", "application/x-json");
      w.Write(data);
 }

一个更简单的解决方案是将矢量数据以json格式存储在文本文件中,并按原样将其提供给客户端。这样你的Go服务器就不必在运行时执行转换。