2010-02-10 67 views
0

我正在研究一個基於JavaScript的頁面,該頁面返回交付成本,具體取決於用戶選擇的內容(地區,服務(前12年等)和權重)。因爲我不知道JS,所以我混亂了我的路。JavaScript在函數之間傳遞變量並對它們進行處理

我的問題是:

  1. 我可以傳遞變量函數之間 - 在下面的腳本詳述?
  2. 一旦達到上述目的,我需要處理變量以顯示結果,現在我可以做一個大規模的ifelse,並不真正想要,因爲會有30多種可能性。所有需要的信息都在一個SQL數據庫中,所以這將是我的首選,但我不確定如何使用JS,整個瀏覽器端,服務器端問題。我是否需要將變量(如上所示)傳遞給PHP(一旦設置了所有3個變量),就可以從SQL DB獲取數據?如果是這樣,我不知道如何做到這一點。
  3. 如果我確實使用PHP,那麼頁面將不得不重新加載,是否有可能讓它與用戶無縫對接,即他們的所有選擇是否仍然顯示?

    function flag(nation, area) { 
        this.nation = nation; 
        var el = document.getElementById("desc"); 
        el.innerHTML = 'The region you have selected is <b>' + area + '</b>'; 
        document.getElementById("flag").innerHTML = '<img src="images/flags/' + nation + '.jpg">'; 
    } 
    
    function output(service) { 
        this.service = service; 
        var el = document.getElementById("service-desc"); 
        el.innerHTML = 'You have selected a <b>' + service + '</b> service.'; 
        document.getElementById("clock").innerHTML = '<img src="images/clock-' + service + '.png">'; 
    } 
    
    function result() { 
        //get varibles(nation & serive) from functions above ~ not sure how to do this! 
        //process varibles 
        if (nation == "UK" && service == "Standard next day") { 
        document.getElementById("result").innerHTML = '£9.99'; 
        } else if (nation == "UK" && service == "Before 12pm") { 
        document.getElementById("result").innerHTML = '£14.99'; 
        } 
        // etc,etc,etc.... 
        else { 
        document.getElementById("a1").innerHTML = ""; 
        } 
    } 
    

回答

0

在javascript中,如果你聲明瞭一個函數以外的變量,你可以在任何函數中使用它,這是一個全局變量。例如。

var x, y; 
function flag(nation,area) 
{ 
    x = nation; 
    y = area; 
} 
function output(service) 
{}  
function result() { 
    //In here you can do whatever you want with x and y 
} 

你最好創建一個PHP腳本,從數據庫中獲取數據並將其返回給你的javascript。做到這一點的最佳方式是AJAX調用,這將允許您從數據庫中無縫地獲取所需的數據,並只更新頁面的特定部分而不是整個頁面。

我建議看看jQuery,因爲它有一些非常容易使用AJAX方法。它只是一個圖書館,包裝的JavaScript和有很多易於使用的功能,很好的介紹vids here

這是一個tutorial關於如何使用jQuery調用PHP腳本從數據庫中獲取數據。

+0

謝謝 - varibles起源於onClick's(onClick =「flag('scotislands','Scottish islands');)這是否有所作爲,因爲當我嘗試你的例子時,我無法得到這個工作... – Bift 2010-02-10 11:29:41

+0

我已經更新了代碼示例以顯示如何設置這些變量的值,然後可以從其他函數訪問它們。 – Fermin 2010-02-10 11:39:32

0

你想AJAX - 寫在JS在PHP服務器端的數據文件,瀏覽器端的迷你應用程序,會談到服務器飼料並相應地更新網頁。這是使用Javascript的XMLHttpRequest對象實現的。我強烈建議你學會使用它,然後依賴於環繞它一個JS庫,並提供了更高級別的服務(如jQuery)

2

基本上有三種選擇:

  • 有PHP腳本把所有頁面上的數據作爲JavaScript數組並處理JavaScript中的所有內容。如果數據總量不是太多,這是一個好的解決方案
  • 當用戶選擇並處理PHP中的所有內容(包括保留現有選擇)時重新加載整個頁面 - 這是使其工作的唯一方法沒有JavaScript,但只有其他缺點。
  • 使用AJAX當用戶做出選擇時,即JavaScript在後臺調用服務器,並且一個特殊的PHP腳本只返回JavaScript隨後用於更新頁面的相關數據(通常使用JSON格式)。這就是現在通常所做的。