在Smarty中定义AJAX返回的格式
Define in Smarty the format to be returned by AJAX
我在Smarty模板中有一个html表单。表单中的select
是通过AJAX填充的。我想在Smarty模板中指定AJAX调用返回的格式。通过这种方式,我可以将相同的请求url用于不同的目的。例如,如果select
包含用户,有时我可能有兴趣了解用户的电子邮件地址(格式:"{$Option->GetName()} ({$Option->Email})"
),其他时候可能有兴趣知道用户的组织(格式:"{$Option->GetName()} ({$Option->Organisation})"
)。
我对如何实现这一点有一些想法:
- 将格式存储在模板中的html/js中。然后AJAX调用可以将所需的返回格式与请求一起发送缺点:恶意用户可以更改请求中的格式,这可能是一个安全问题
- 传递整个
$Option
对象,并使用JavaScript进行格式化缺点:不能使用PHP对象的方法,如$Option->GetName()
- 将格式存储在一个单独的模板文件中,并在html/js中引用该文件,然后与AJAX请求一起发送缺点:恶意用户可以更改对模板文件的引用,但可能不会造成任何损害。这种方法需要额外的模板文件,并且表示逻辑将分布在不同的文件中
- 创建一个Smarty插件,使项目3的过程自动化。那么表示逻辑将不会被分离缺点:恶意用户可以更改对模板文件的引用,但可能不会造成任何损害
有人对做这样的事情有其他更好的想法或经验吗?
我认为您不需要设置一些格式。您可以创建一个带有3个参数的javascript函数。<select>
标记标识符、用于选项值的键的名称以及用于选项文本的键名称。该函数将发出ajax请求。这样,您就可以调用具有特定情况所需设置的函数。
更多详细信息取决于您当前的代码。
我最终使用了选项4,我对结果非常满意。
如果有人遇到这个问题,需要我如何实现它的信息,只需发表评论,我会尽力解释。
相关文章:
- 将客户端特定的日期格式返回到服务器MVC4
- 在Smarty中定义AJAX返回的格式
- 如何将日期选择器返回的日期格式转换为其他格式
- KendoDatePicker 无法识别从 Web 服务以 JSON 格式返回的日期
- 修改Ajax请求返回的JSon格式
- Apache poi XSSF创建Excel文件-Create返回格式或文件扩展名无效的空文件
- 谷歌地图API'.pac项目:first'返回格式不正确
- PhoneGap API返回时间戳格式
- 比较两个日期并以正确的格式返回
- 从Google Maps API返回的jQuery格式时间
- 调用.ajax方法得到未定义的json结果,返回json格式列表<字符串>
- 使用javascript将两种数字格式相加以返回长数字
- 不同格式的相同日期返回不同的值
- 从 AJAX 命令返回 JSON 格式的响应
- AngularJS $filter(date) 返回错误的格式
- 从 ajax 读取值以 json 格式返回
- 返回格式的日期 ( x 年, x 月, x 天) - JavaScript.
- jQuery AJAX类型jsonp,返回格式错误的JSON
- FileReader.readAsDataURL结果在Convert.FromBase64String中输入时返回格式异
- 美元http.获取返回格式错误的数据