2010-11-20 52 views
0

爲了將動態值傳遞給js代碼,這樣做更好嗎?將動態參數傳遞給js代碼 - 哪個更好?

var myVar = '<?php echo addslashes($_SESSION['myVar']); ?>'; 

或者在運行時進行AJAX調用以獲取會話變量並將其分配給myVar?

有什麼優點和缺點?

我個人比較喜歡AJAX方法。它使代碼看起來更好,以防複雜的陣列分配等。

想獲得專家意見。

更新

據我所知,使用AJAX方法,每個HTTP請求數。但是,如果我們在JavaScript文件內部有完善定義的函數,那麼我們只需要有可用的函數參數。只要我們想調用這些參數,就可以在函數調用中傳遞這些參數,例如,像這樣: -

<a onclick="some_function('<?php echo $_SESSION['var'] ?>')"> 

這是我通常做的,在我的項目中,我很少需要在JavaScript文件中將它們內聯傳遞。我有AJAX呼叫做服務器端處理(當然,當它需要)。

我在這裏的基本想法是有內聯js腳本單獨的js文件intead。我在看this question。我肯定不會爲獲取每個變量而進行AJAX調用(因爲它可能看起來像我的問題),因爲這種情況不會出現。

謝謝。

回答

1

AJAX調用是另一個請求,並且結果將不會立即可用 - 直接寫入動態數據inline可用。在這種情況下,我傾向於選擇內聯方法。

PHP的json_encode()可能會使寫出甚至巨大的數組相當容易,而不會使代碼混亂很多。

+0

我其實並不是想要做一個AJAX請求來獲取每個服務器端的變量,以便在javascript中使用。請檢查我的更新。 – 2010-11-20 09:57:44

+0

@sandeepan我看到你有關於單獨的JS腳本的觀點,這很有道理 - 它是最乾淨的方式。我個人可能仍然傾向於將動態位放入文檔的''中,但我會說這兩種方法都是正確的 – 2010-11-20 10:04:13

+0

您是指文檔頭中的js代碼中的動態位?但在你的情況下這是不可避免的?你是否接受你沒有遵循最清潔的方式? :) – 2010-11-20 10:09:21

1

首先,請注意,您實際上並未實際生成Javascript代碼;您正在使用PHP將參數的值傳遞給瀏覽器。

如果這是代碼中PHP的唯一(或主要)功能,最好使用AJAX,而不是使用PHP生成頁面本身(即使用.html文件而不是.php)。原因:工作更快,因爲大部分內容都是靜態存儲的。

如果您使用PHP生成大部分頁面,則不需要添加其他請求,如Pekka所述。只是內聯。

+0

@Little Bobby Tables你是對的......編輯標題。請檢查我的問題更新。謝謝 – 2010-11-20 09:59:34

+0

@Little Bobby Tables我錯了,說我更喜歡AJAX調用分配動態參數,並認爲AJAX調用不明智,因爲每個Ajax調用都會導致額外的請求。如果傳遞動態參數是主要需求,那麼像我在我的問題更新中寫的那樣做會更好。除非有服務器端任務,否則在這種情況下不需要AJAX請求。 – 2010-11-20 10:24:40

+0

@Sandeepan:您是否將PHP用於會話管理以外的任何其他功能? – 2010-11-20 11:42:10