2009-12-24 101 views
0

這裏的例子:javascript變量爲html?

Ive得到2只列出了我的網站。國家和地區。當用戶第一次輸入選項是ALL和ALL時。然後他選擇一個國家和一個地區。我使用jquery bbq來爲不同的變量散列url以記住獨特的ajax呈現的頁面。例如:

webpage#country=1&region=3 
webpage#country=2&region=3 

現在我希望用戶能夠將此網址發送給他人,瀏覽器將顯示相同的HTML選擇列表。

,所以我想出了一個解決方案:

首先我搶的散列與jQuery和把他們變成餅乾。 然後我有以下HTML代碼:

<select> 
<?php 
    while($row = mysqli_fetch_assoc($countries)) 
    { 
       if($row['id'] == $_COOKIE['country']) 
       { 
        echo "<option value='" . $row['id'] . "' selected>" . $row['name'] . "</option>"; 
       } 
       else 
       { 
        echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>"; 
       } 

    } 
?> 
</select> 

這將顯示該用戶已經從列表中選擇了選項。同樣的事情去區域選擇列表。

但問題是,它在Firefox中不工作。而且在safari中速度太慢,無法顯示。在顯示html之後創建cookie。所以我不得不第二次刷新頁面。

它似乎只是它不是一個很好的解決方案。我不希望HTML呈現所有的選項,然後更改爲jquery選擇的選項。那麼用戶會看到這些列表突然變化,並且變得醜陋。

什麼是我選擇這裏?我認爲這個問題已經跨越了很多Ajax程序員的頭腦。

(該網站有超過2只列出了,所以我真的希望這個工作)

回答

1

我不認爲餅乾正在你在正確的方向。第一次訪問後,Cookies用於記憶某些事物。之前沒有。

無論什麼時候,如果你在使用JavaScript或其他任何客戶端代碼這一點,有些人會擁有連接/瀏覽器足夠慢的,他們將看到的選項負荷的一種方式,然後得到切換。這聽起來更像是你希望服務器動態生成選項列表。使它這樣生成的鏈接是

webpage?country=1&region=3 
webpage?country=2&region=3 

然後服務器就知道什麼是預先選定的,可以產生與正確的價值觀最初版本預先選擇。但是,如果用戶沒有傳入國家/地區的值,那麼只需像往常一樣生成頁面即可。

+0

糾正我,如果我錯了。但因爲我使用Ajax來跟蹤差異獨特的頁面並不意味着我不能使用?串?似乎我必須根據jquery bbq#使用變量,否則網站將刷新我不想要的。 – ajsie

+0

對於已經在您的網站上的用戶,但是當他們第一次通過鏈接訪問您的網站時,您可以使用其中一種(或兩種)。如果你真的想要在用戶面前不加改變的情況下加載初始頁面,最好的選擇是從服務器上加載它。 –

1

不知道您的具體要求,但不是cookies,您可以使用會話變量。