2011-10-04 462 views
0

我想知道是否有人可以幫助我。通過Javascript傳遞PHP值

我正在使用下面的代碼將OS GRid引用成功轉換爲Lat & Lon座標。這是通過在我的html表單上的按鈕上的點擊事件完成的。

function converttolatlng() { 
    var gr = document.getElementById('osgridref').value; 

    var osgb = new GT_OSGB(); 


    if (osgb.parseGridRef(gr)) { 
     var wgs84 = osgb.getWGS84(); 

     document.getElementById('osgb36lat').value = wgs84.latitude; 
     document.getElementById('osgb36lon').value = wgs84.longitude; 
    } 
    else { 
     document.getElementById('osgb36lat').value = "n/a"; 
     document.getElementById('osgb36lon').value = "n/a"; 
    } 

} 

我現在想介紹一些OS柵格參考(約22000),從外部XML文件,我要上傳信息到MySQL數據庫之前轉換,(因此不會通過走正常形式的'點擊'事件),但我真的不知道該怎麼做。

有人可能請告訴我,我將如何繞過「點擊」事件的需要,並自動執行轉換。

任何幫助將不勝感激。

非常感謝

+1

這與PHP有什麼關係? –

回答

0

如果我正確理解你的問題,和你真的只是希望避免點擊一個按鈕,你可以簡單地調用在<script>的功能在你的HTML的底部。該腳本將在瀏覽器呈現時立即執行,只要必要的元素已經放在頁面上方並加載了XML,它就會正常工作。

<!-- after most of your HTML, but before the closing <body> --> 
<script type='text/javascript'> 
    converttolatlng(); 
</script> 

</body> 
</html> 

如果您需要完整的頁面加載並請有需要到位腳本加載一些外部依賴,使用window.onload屬性HTML <head>標籤中:

<script type='text/javascript'> 
    window.onload = converttolatlng(); 
</script> 
+0

嗨,非常感謝您花時間回覆我的帖子。理想情況下,如果可以,我想完全繞過HTML表單。這樣,它可以在我的網站用戶數量很少的幾個小時內按計劃運行。親切的問候 – IRHM

0

的快速方法做到這一點(並學習將來非常有用的工具)就是使用像Pentaho Kettle這樣的ETL工具。這是一個可視化工具,您可以連接到數據庫和XML文件,執行Step轉換,然後點擊運行。它會爲你做所有的轉換。

如果需要,您可以使用Pentaho中的OSGB java庫爲您進行轉換,但您也可以使用Javascript庫。 Pentaho的文檔有點缺乏,需要一點時間才能使用,但是一旦你發現了它,它可以加速任何ETL項目,你可能需要幾分鐘而不是幾個小時。或者,如果OSGB庫在PHP中不可用,那麼我只是將它作爲一個循環通過Javascript運行並使用jQuery.Json函數,將結果傳遞給PHP以寫入數據庫。這樣你就可以傳遞異步對象,只需要處理那些失敗的轉換/數據庫寫入。

檢查PHPCoord