2011-06-14 53 views
0

我有一個.txt文件,其中包含形式(x,y,z)的3d點。 使用go我將點座標提取到數組X [],Y [],Z []中。 現在我需要將這些數組傳遞給外部javascript(即js中的 函數)。 我該怎麼做? 一般來說,如何將一些參數傳遞給.html 文件中的任何js函數。將數組傳遞給外部js通過去

+4

這與Java有什麼關係? Java和Javascript是完全不同的語言。 – 2011-06-14 07:03:54

+0

Go和JavaScript之間的連接在哪裏? Go是否調用JavaScript? Go是否提供JavaScript來源?你的環境是什麼樣的? – Kissaki 2011-06-15 20:05:13

+0

其實,我正在運行一個服務器,我必須從這個服務器調用一個javascript函數,並且傳遞的參數也是由go生成的。現在主要的問題是如何使這些參數在js函數中生成.... – chinmay 2011-06-17 14:21:28

回答

0

假設你正在運行的服務器是一個圍棋程序,你應該圍繞走另一條路。

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

在轉到側:

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服務器就不必在運行時執行轉換。

+0

非常感謝,這真的非常有用 – chinmay 2011-06-17 14:20:44

+0

更簡單的解決方案是將矢量數據存儲在json格式在文本文件中並按原樣提供給客戶端。這樣你的Go服務器就不必在運行時執行轉換。你能告訴我這是怎麼做到的? – chinmay 2011-06-24 11:24:14

+0

有沒有什麼作爲一個.json文件,我可以以json格式存儲數據,然後當用戶需要時,javascript會傳遞這個.json文件的內容....您可以發佈一些鏈接以供參考.. – chinmay 2011-06-24 11:28:12

1

我說:只是通過它們(通過參考):

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

[編輯]這可能是一個想法:該陣列serialeze串附着,作爲查詢字符串的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(','); 
    } 

這應該有3個屬性(points1-3)與陣列交付標的物pointsObj

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

這很可能。那麼也許換一個問題來澄清一下可能會增強我的理解? – KooiInc 2011-06-14 08:06:04

+0

我不認爲你知道我在問什麼,我說的是我有一個文件「main.go」,其中我寫了代碼來提取數組x [],y [],z []從一個.txt文件。從.txt文件中提取這些數組後,我想將它傳遞給另一個包含js函數(比如f)的「index.html」文件,該函數將參數作爲三個數組。現在,我如何將提取的數組x,y,z從main.go傳遞到index.html中的函數f – chinmay 2011-06-14 08:07:25

相關問題