2011-07-27 195 views
2

我在將JavaScript變量傳遞給smarty時遇到了一些問題。將JavaScript變量傳遞給smarty

例子:

{literal} 
<script type="text/javascript"> 
    var js_variable = 110; 
</script> 
{/literal} 

jQuery('div.fakbox_msg').html("{/literal}{lang_sprintf id=100013 1=js_variable}{literal}"); 
+0

的可能重複(http://stackoverflow.com/questions/6672929/variable-from-javascript- php-smarty-is-it-possible) –

+0

你想做什麼是不可能的。 PHP在服務器端執行,在客戶端執行JavaScript。 –

回答

0

我從來沒有使用過Smarty的,所以我可能是錯的,但是從我看到你的代碼。這應該工作:

jQuery('div.fakbox_msg').html("{/literal}{lang_sprintf id=100013 1=" + js_variable + "}{literal}");

+0

感謝您的及時回覆, 我嘗試過使用這種方法,但總是得到一個空對象:( – blackriderws

+0

您可以提供更多關於您想要做什麼的細節嗎?客戶端腳本(Javascript)看起來不正確在這裏,考慮Smarty是一個PHP模板引擎。你有沒有考慮過使用Smarty變量? – bfavaretto

+0

是的,當然,我試圖設置和動態變量在smarty使用Javascript:100013 ='Hy我的號碼是%1 $ d'jQuery('div .fakbox_msg')。html(「{/ literal} {lang_sprintf id = 100013 1 =」+ js_variable +「} {literal}」);代碼是正確的,因爲當我嘗試刪除{literal}標籤時,js_variable工作:示例:{literal} {/ literal} jQuery('div.fakbox_msg')。html(「{lang_sprintf id = 100013 1 =」+ js_variable +「}} 「);輸出是:{lang_sprintf id = 100013 1 = 110} – blackriderws

0

Smarty的不能使用客戶端變量,如由JavaScript創建的。

1

你不能以簡單的方式做到這一點。在瀏覽器獲取數據之前,PHP和擴展名Smarty在服務器端被解析並運行。當瀏覽器解析服務器發送的HTML,CSS和Javascript時,JavaScript將在客戶端運行。

您將不得不以某種方式發送新的HTTP請求,以發送新數據。您可以通過重新加載整個網頁並將內容發送到查詢字符串中(在URL中的?之後)或通過從JS代碼執行Ajax調用稍微高級一些來實現這一點,並讓JS對您所需的頁面進行更改。後者更復雜,需要一些Javascript知識,但不需要重新加載頁面。 更多信息:?從JavaScript變量 - >腓 - > Smarty的......是有可能] Assign JavaScript variable to Smarty variable