簡體   English   中英

在Smarty中定義AJAX返回的格式

[英]Define in Smarty the format to be returned by AJAX

我在Smarty模板中有一個html表單。 表單中的select通過AJAX填充。 我想在Smarty模板中指定AJAX調用返回的格式。 這樣,我可以將相同的請求網址用於不同的目的。 例如,如果select包含用戶,有時我可能想知道用戶的電子郵件地址(格式: "{$Option->GetName()} ({$Option->Email})" ),而有時是用戶的組織(格式: "{$Option->GetName()} ({$Option->Organisation})" )。

我對如何實現這一點有一些想法:

  1. 將格式存儲在模板中的html / js中。 然后,AJAX調用可以將所需的返回格式與請求一起發送。 缺點 :惡意用戶可以更改請求中的格式,這可能是安全問題。
  2. 傳遞整個$Option對象,並使用JavaScript進行格式化。 缺點 :無法使用PHP對象的方法,例如$Option->GetName()
  3. 將格式存儲在單獨的模板文件中,並在html / js中引用此文件,並與AJAX請求一起發送。 缺點 :惡意用戶可以更改對模板文件的引用,但可能不會造成損壞。 這種方法需要額外的模板文件,並且表示邏輯將散布在不同的文件中。
  4. 創建一個Smarty插件,該插件可以自動執行第3項的處理。然后,將不會分離表示邏輯。 缺點 :惡意用戶可以更改對模板文件的引用,但可能不會造成損壞。

是否有人有其他/更好的主意,或有做類似事情的經驗?

我認為您不需要設置某種格式。 您可以使用3個參數創建一個javascript函數。 <select>標記標識符,用於選項值的鍵的名稱以及用於選項文本的鍵名。 該函數將發出ajax請求。 這樣,您可以使用特定情況所需的設置來調用該函數。

更多詳細信息取決於您當前的代碼。

我最終使用了選項4,對此結果我感到非常滿意。

如果有人遇到這個問題,並且需要有關我如何實現的信息,只需發表評論,我將盡力解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM